From 7fc352981e116d3b28aebf0e24fe8497533a0e10 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Fri, 10 Sep 2021 12:22:11 +0300 Subject: [PATCH] Recurring --- .../edit/recurring_expense_edit_vm.dart | 54 ++++++++++--------- stubs/ui/stub/edit/stub_edit_vm | 50 +++++++++-------- 2 files changed, 56 insertions(+), 48 deletions(-) diff --git a/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart b/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart index cb69cdae6..2ed5eed9f 100644 --- a/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart +++ b/lib/ui/recurring_expense/edit/recurring_expense_edit_vm.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart'; +import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; @@ -82,33 +83,36 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM { } }, onSavePressed: (BuildContext context) { - final localization = AppLocalization.of(context); - final Completer completer = - new Completer(); - store.dispatch(SaveRecurringExpenseRequest( - completer: completer, recurringExpense: recurringExpense)); - return completer.future.then((savedRecurringExpense) { - showToast(recurringExpense.isNew - ? localization.createdRecurringExpense - : localization.updatedRecurringExpense); - if (state.prefState.isMobile) { - store - .dispatch(UpdateCurrentRoute(RecurringExpenseViewScreen.route)); - if (recurringExpense.isNew) { - Navigator.of(context) - .pushReplacementNamed(RecurringExpenseViewScreen.route); + Debouncer.runOnComplete(() { + final recurringExpense = store.state.recurringExpenseUIState.editing; + final localization = AppLocalization.of(context); + final Completer completer = + new Completer(); + store.dispatch(SaveRecurringExpenseRequest( + completer: completer, recurringExpense: recurringExpense)); + return completer.future.then((savedRecurringExpense) { + showToast(recurringExpense.isNew + ? localization.createdRecurringExpense + : localization.updatedRecurringExpense); + if (state.prefState.isMobile) { + store.dispatch( + UpdateCurrentRoute(RecurringExpenseViewScreen.route)); + if (recurringExpense.isNew) { + Navigator.of(context) + .pushReplacementNamed(RecurringExpenseViewScreen.route); + } else { + Navigator.of(context).pop(savedRecurringExpense); + } } else { - Navigator.of(context).pop(savedRecurringExpense); + viewEntity(entity: savedRecurringExpense, force: true); } - } else { - viewEntity(entity: savedRecurringExpense, force: true); - } - }).catchError((Object error) { - showDialog( - context: context, - builder: (BuildContext context) { - return ErrorDialog(error); - }); + }).catchError((Object error) { + showDialog( + context: context, + builder: (BuildContext context) { + return ErrorDialog(error); + }); + }); }); }, ); diff --git a/stubs/ui/stub/edit/stub_edit_vm b/stubs/ui/stub/edit/stub_edit_vm index cca125ebc..34aada592 100644 --- a/stubs/ui/stub/edit/stub_edit_vm +++ b/stubs/ui/stub/edit/stub_edit_vm @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/redux/app/app_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:redux/redux.dart'; +import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/stub/view/stub_view_vm.dart'; @@ -72,29 +73,32 @@ class StubEditVM { } }, onSavePressed: (BuildContext context) { - final localization = AppLocalization.of(context); - final Completer completer = new Completer(); - store.dispatch(SaveStubRequest(completer: completer, stub: stub)); - return completer.future.then((savedStub) { - showToast(stub.isNew - ? localization.createdStub - : localization.updatedStub); - if (state.prefState.isMobile) { - store.dispatch(UpdateCurrentRoute(StubViewScreen.route)); - if (stub.isNew) { - Navigator.of(context).pushReplacementNamed(StubViewScreen.route); - } else { - Navigator.of(context).pop(savedStub); - } - } else { - viewEntity( entity: savedStub, force: true); - } - }).catchError((Object error) { - showDialog( - context: context, - builder: (BuildContext context) { - return ErrorDialog(error); - }); + Debouncer.runOnComplete(() { + final stub = store.state.stubUIState.editing; + final localization = AppLocalization.of(context); + final Completer completer = new Completer(); + store.dispatch(SaveStubRequest(completer: completer, stub: stub)); + return completer.future.then((savedStub) { + showToast(stub.isNew + ? localization.createdStub + : localization.updatedStub); + if (state.prefState.isMobile) { + store.dispatch(UpdateCurrentRoute(StubViewScreen.route)); + if (stub.isNew) { + Navigator.of(context).pushReplacementNamed(StubViewScreen.route); + } else { + Navigator.of(context).pop(savedStub); + } + } else { + viewEntity( entity: savedStub, force: true); + } + }).catchError((Object error) { + showDialog( + context: context, + builder: (BuildContext context) { + return ErrorDialog(error); + }); + }); }); }, );