diff --git a/lib/redux/client/client_middleware.dart b/lib/redux/client/client_middleware.dart index c95827c3c..f5e9bd717 100644 --- a/lib/redux/client/client_middleware.dart +++ b/lib/redux/client/client_middleware.dart @@ -1,7 +1,9 @@ +import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:invoiceninja/data/models/models.dart'; import 'package:invoiceninja/redux/product/product_actions.dart'; import 'package:invoiceninja/redux/ui/ui_actions.dart'; +import 'package:invoiceninja/ui/app/snackbar_row.dart'; import 'package:invoiceninja/ui/client/client_screen.dart'; import 'package:invoiceninja/ui/client/edit/client_edit_vm.dart'; import 'package:invoiceninja/ui/client/view/client_view_vm.dart'; @@ -35,20 +37,30 @@ List> createStoreClientsMiddleware([ } Middleware _editClient() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic action, NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(ClientEditScreen.route)); - Navigator.of(action.context).pushNamed(ClientEditScreen.route); + final message = await Navigator.of(action.context).pushNamed(ClientEditScreen.route); + + Scaffold.of(action.context).showSnackBar(SnackBar( + content: SnackBarRow( + message: message, + ))); }; } Middleware _viewClient() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic action, NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(ClientViewScreen.route)); - Navigator.of(action.context).pushNamed(ClientViewScreen.route); + final message = await Navigator.of(action.context).pushNamed(ClientViewScreen.route); + + Scaffold.of(action.context).showSnackBar(SnackBar( + content: SnackBarRow( + message: message, + ))); }; } diff --git a/lib/redux/invoice/invoice_middleware.dart b/lib/redux/invoice/invoice_middleware.dart index b9618248d..22a3a29ae 100644 --- a/lib/redux/invoice/invoice_middleware.dart +++ b/lib/redux/invoice/invoice_middleware.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:invoiceninja/data/models/models.dart'; import 'package:invoiceninja/redux/ui/ui_actions.dart'; +import 'package:invoiceninja/ui/app/snackbar_row.dart'; import 'package:invoiceninja/ui/invoice/edit/invoice_edit_vm.dart'; import 'package:invoiceninja/ui/invoice/invoice_screen.dart'; import 'package:invoiceninja/ui/invoice/view/invoice_view_vm.dart'; @@ -39,11 +40,16 @@ List> createStoreInvoicesMiddleware([ } Middleware _viewInvoice() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic action, NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(InvoiceViewScreen.route)); - Navigator.of(action.context).pushNamed(InvoiceViewScreen.route); + final message = await Navigator.of(action.context).pushNamed(InvoiceViewScreen.route); + + Scaffold.of(action.context).showSnackBar(SnackBar( + content: SnackBarRow( + message: message, + ))); }; } @@ -57,11 +63,16 @@ Middleware _viewInvoiceList() { } Middleware _editInvoice() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic action, NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route)); - Navigator.of(action.context).pushNamed(InvoiceEditScreen.route); + final message = await Navigator.of(action.context).pushNamed(InvoiceEditScreen.route); + + Scaffold.of(action.context).showSnackBar(SnackBar( + content: SnackBarRow( + message: message, + ))); }; } diff --git a/lib/redux/product/product_middleware.dart b/lib/redux/product/product_middleware.dart index c6dcd4c1c..8061b481a 100644 --- a/lib/redux/product/product_middleware.dart +++ b/lib/redux/product/product_middleware.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:invoiceninja/data/models/models.dart'; import 'package:invoiceninja/redux/ui/ui_actions.dart'; +import 'package:invoiceninja/ui/app/snackbar_row.dart'; import 'package:invoiceninja/ui/product/edit/product_edit_vm.dart'; import 'package:invoiceninja/ui/product/product_screen.dart'; import 'package:redux/redux.dart'; @@ -31,11 +32,16 @@ List> createStoreProductsMiddleware([ } Middleware _editProduct() { - return (Store store, dynamic action, NextDispatcher next) { + return (Store store, dynamic action, NextDispatcher next) async { next(action); store.dispatch(UpdateCurrentRoute(ProductEditScreen.route)); - Navigator.of(action.context).pushNamed(ProductEditScreen.route); + final message = await Navigator.of(action.context).pushNamed(ProductEditScreen.route); + + Scaffold.of(action.context).showSnackBar(SnackBar( + content: SnackBarRow( + message: message, + ))); }; } diff --git a/lib/ui/client/edit/client_edit_vm.dart b/lib/ui/client/edit/client_edit_vm.dart index 152bdf24e..de7bc084c 100644 --- a/lib/ui/client/edit/client_edit_vm.dart +++ b/lib/ui/client/edit/client_edit_vm.dart @@ -100,12 +100,13 @@ class ClientEditVM { store.dispatch( SaveClientRequest(completer: completer, client: client)); return completer.future.then((_) { + final localization = AppLocalization.of(context); if (client.isNew) { - Navigator.of(context).pop(); + Navigator.of(context).pop(localization.successfullyCreatedClient); Navigator.of(context).push( MaterialPageRoute(builder: (_) => ClientViewScreen())); } else { - Navigator.of(context).pop(); + Navigator.of(context).pop(localization.successfullyUpdatedClient); } }).catchError((Object error) { showDialog( diff --git a/lib/ui/client/view/client_view_vm.dart b/lib/ui/client/view/client_view_vm.dart index 9fb84bf01..76d463db2 100644 --- a/lib/ui/client/view/client_view_vm.dart +++ b/lib/ui/client/view/client_view_vm.dart @@ -91,7 +91,7 @@ class ClientViewVM { } return completer.future.then((_) { if ([EntityAction.archive, EntityAction.delete].contains(action)) { - Navigator.of(context).pop(); + Navigator.of(context).pop(message); } else { Scaffold.of(context).showSnackBar(SnackBar( content: SnackBarRow( diff --git a/lib/ui/invoice/edit/invoice_edit_vm.dart b/lib/ui/invoice/edit/invoice_edit_vm.dart index c2e944468..54bcffd43 100644 --- a/lib/ui/invoice/edit/invoice_edit_vm.dart +++ b/lib/ui/invoice/edit/invoice_edit_vm.dart @@ -73,17 +73,18 @@ class InvoiceEditVM { onBackPressed: () => store.dispatch(UpdateCurrentRoute(InvoiceScreen.route)), onSavePressed: (BuildContext context) { + final localization = AppLocalization.of(context); final Completer completer = new Completer(); store.dispatch( SaveInvoiceRequest(completer: completer, invoice: invoice)); return completer.future.then((_) { if (invoice.isNew) { - Navigator.of(context).pop(); + Navigator.of(context).pop(localization.successfullyCreatedInvoice); Navigator .of(context) .push(MaterialPageRoute(builder: (_) => InvoiceViewScreen())); } else { - Navigator.of(context).pop(); + Navigator.of(context).pop(localization.successfullyUpdatedInvoice); } }).catchError((Object error) { showDialog( @@ -118,7 +119,7 @@ class InvoiceEditVM { } return completer.future.then((_) { if ([EntityAction.archive, EntityAction.delete].contains(action)) { - Navigator.of(context).pop(); + Navigator.of(context).pop(message); } else { Scaffold.of(context).showSnackBar(SnackBar( content: SnackBarRow( diff --git a/lib/ui/invoice/view/invoice_view_vm.dart b/lib/ui/invoice/view/invoice_view_vm.dart index 285fcfd0b..ac2436b3c 100644 --- a/lib/ui/invoice/view/invoice_view_vm.dart +++ b/lib/ui/invoice/view/invoice_view_vm.dart @@ -126,7 +126,7 @@ class InvoiceViewVM { if (message != null) { return completer.future.then((_) { if ([EntityAction.archive, EntityAction.delete].contains(action)) { - Navigator.of(context).pop(); + Navigator.of(context).pop(message); } else { Scaffold.of(context).showSnackBar(SnackBar( content: SnackBarRow( diff --git a/lib/ui/product/edit/product_edit_vm.dart b/lib/ui/product/edit/product_edit_vm.dart index 7c293817e..8d3584a4f 100644 --- a/lib/ui/product/edit/product_edit_vm.dart +++ b/lib/ui/product/edit/product_edit_vm.dart @@ -109,7 +109,7 @@ class ProductEditVM { } return completer.future.then((_) { if ([EntityAction.archive, EntityAction.delete].contains(action)) { - Navigator.of(context).pop(); + Navigator.of(context).pop(message); } else { Scaffold.of(context).showSnackBar(SnackBar( content: SnackBarRow(