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/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<ExpenseEntity> completer =
new Completer<ExpenseEntity>();
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<ExpenseEntity> completer =
new Completer<ExpenseEntity>();
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<ErrorDialog>(
context: context,
builder: (BuildContext context) {
return ErrorDialog(error);
});
}).catchError((Object error) {
showDialog<ErrorDialog>(
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/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<StubEntity> completer = new Completer<StubEntity>();
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<ErrorDialog>(
context: context,
builder: (BuildContext context) {
return ErrorDialog(error);
});
Debouncer.runOnComplete(() {
final stub = store.state.stubUIState.editing;
final localization = AppLocalization.of(context);
final Completer<StubEntity> completer = new Completer<StubEntity>();
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<ErrorDialog>(
context: context,
builder: (BuildContext context) {
return ErrorDialog(error);
});
});
});
},
);