Recurring

This commit is contained in:
Hillel Coren 2021-09-10 12:22:11 +03:00
parent 48fabb0256
commit 7fc352981e
2 changed files with 56 additions and 48 deletions

View File

@ -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/redux/ui/ui_actions.dart';
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit.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/ui/expense/edit/expense_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
@ -82,33 +83,36 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
} }
}, },
onSavePressed: (BuildContext context) { onSavePressed: (BuildContext context) {
final localization = AppLocalization.of(context); Debouncer.runOnComplete(() {
final Completer<ExpenseEntity> completer = final recurringExpense = store.state.recurringExpenseUIState.editing;
new Completer<ExpenseEntity>(); final localization = AppLocalization.of(context);
store.dispatch(SaveRecurringExpenseRequest( final Completer<ExpenseEntity> completer =
completer: completer, recurringExpense: recurringExpense)); new Completer<ExpenseEntity>();
return completer.future.then((savedRecurringExpense) { store.dispatch(SaveRecurringExpenseRequest(
showToast(recurringExpense.isNew completer: completer, recurringExpense: recurringExpense));
? localization.createdRecurringExpense return completer.future.then((savedRecurringExpense) {
: localization.updatedRecurringExpense); showToast(recurringExpense.isNew
if (state.prefState.isMobile) { ? localization.createdRecurringExpense
store : localization.updatedRecurringExpense);
.dispatch(UpdateCurrentRoute(RecurringExpenseViewScreen.route)); if (state.prefState.isMobile) {
if (recurringExpense.isNew) { store.dispatch(
Navigator.of(context) UpdateCurrentRoute(RecurringExpenseViewScreen.route));
.pushReplacementNamed(RecurringExpenseViewScreen.route); if (recurringExpense.isNew) {
Navigator.of(context)
.pushReplacementNamed(RecurringExpenseViewScreen.route);
} else {
Navigator.of(context).pop(savedRecurringExpense);
}
} else { } else {
Navigator.of(context).pop(savedRecurringExpense); viewEntity(entity: savedRecurringExpense, force: true);
} }
} else { }).catchError((Object error) {
viewEntity(entity: savedRecurringExpense, force: true); showDialog<ErrorDialog>(
} context: context,
}).catchError((Object error) { builder: (BuildContext context) {
showDialog<ErrorDialog>( return ErrorDialog(error);
context: context, });
builder: (BuildContext context) { });
return ErrorDialog(error);
});
}); });
}, },
); );

View File

@ -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/redux/ui/ui_actions.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.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/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
import 'package:invoiceninja_flutter/ui/stub/view/stub_view_vm.dart'; import 'package:invoiceninja_flutter/ui/stub/view/stub_view_vm.dart';
@ -72,29 +73,32 @@ class StubEditVM {
} }
}, },
onSavePressed: (BuildContext context) { onSavePressed: (BuildContext context) {
final localization = AppLocalization.of(context); Debouncer.runOnComplete(() {
final Completer<StubEntity> completer = new Completer<StubEntity>(); final stub = store.state.stubUIState.editing;
store.dispatch(SaveStubRequest(completer: completer, stub: stub)); final localization = AppLocalization.of(context);
return completer.future.then((savedStub) { final Completer<StubEntity> completer = new Completer<StubEntity>();
showToast(stub.isNew store.dispatch(SaveStubRequest(completer: completer, stub: stub));
? localization.createdStub return completer.future.then((savedStub) {
: localization.updatedStub); showToast(stub.isNew
if (state.prefState.isMobile) { ? localization.createdStub
store.dispatch(UpdateCurrentRoute(StubViewScreen.route)); : localization.updatedStub);
if (stub.isNew) { if (state.prefState.isMobile) {
Navigator.of(context).pushReplacementNamed(StubViewScreen.route); store.dispatch(UpdateCurrentRoute(StubViewScreen.route));
} else { if (stub.isNew) {
Navigator.of(context).pop(savedStub); Navigator.of(context).pushReplacementNamed(StubViewScreen.route);
} } else {
} else { Navigator.of(context).pop(savedStub);
viewEntity( entity: savedStub, force: true); }
} } else {
}).catchError((Object error) { viewEntity( entity: savedStub, force: true);
showDialog<ErrorDialog>( }
context: context, }).catchError((Object error) {
builder: (BuildContext context) { showDialog<ErrorDialog>(
return ErrorDialog(error); context: context,
}); builder: (BuildContext context) {
return ErrorDialog(error);
});
});
}); });
}, },
); );