diff --git a/lib/redux/product/product_actions.dart b/lib/redux/product/product_actions.dart index 066d1391c..30198c439 100644 --- a/lib/redux/product/product_actions.dart +++ b/lib/redux/product/product_actions.dart @@ -25,7 +25,7 @@ class LoadProducts { final Completer completer; final bool force; - LoadProducts([this.completer, this.force = false]); + LoadProducts({this.completer, this.force = false}); } class LoadProductsRequest implements StartLoading {} diff --git a/lib/ui/client/client_list_vm.dart b/lib/ui/client/client_list_vm.dart index 34012e058..eb7cbc950 100644 --- a/lib/ui/client/client_list_vm.dart +++ b/lib/ui/client/client_list_vm.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/redux/client/client_selectors.dart'; @@ -8,6 +7,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_redux/flutter_redux.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart'; +import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; @@ -54,19 +54,16 @@ class ClientListVM { }); static ClientListVM fromStore(Store store) { - Future _handleRefresh(BuildContext context) { - final Completer completer = Completer(); - store.dispatch(LoadClients(completer: completer, force: true)); - return completer.future.then((_) { - Scaffold.of(context).showSnackBar(SnackBar( - content: SnackBarRow( - message: AppLocalization.of(context).refreshComplete, - ))); - }); - } + Future _handleRefresh(BuildContext context) { + final completer = snackBarCompleter( + context, AppLocalization.of(context).refreshComplete); + store.dispatch(LoadClients(completer: completer, force: true)); + return completer.future; + } return ClientListVM( - clientList: memoizedFilteredClientList(store.state.clientState.map, store.state.clientState.list, store.state.clientListState), + clientList: memoizedFilteredClientList(store.state.clientState.map, + store.state.clientState.list, store.state.clientListState), clientMap: store.state.clientState.map, isLoading: store.state.isLoading, isLoaded: store.state.clientState.isLoaded, @@ -98,7 +95,7 @@ class ClientListVM { } return completer.future.then((_) { Scaffold.of(context).showSnackBar(SnackBar( - content: SnackBarRow( + content: SnackBarRow( message: message, ))); }).catchError((Object error) { diff --git a/lib/ui/invoice/view/invoice_view_vm.dart b/lib/ui/invoice/view/invoice_view_vm.dart index d9e8e3ca6..16fa3735c 100644 --- a/lib/ui/invoice/view/invoice_view_vm.dart +++ b/lib/ui/invoice/view/invoice_view_vm.dart @@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/redux/client/client_actions.dart'; import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/invoice/invoice_screen.dart'; +import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart'; @@ -66,14 +67,10 @@ class InvoiceViewVM { final client = store.state.clientState.map[invoice.clientId]; Future _handleRefresh(BuildContext context) { - final Completer completer = Completer(); - store.dispatch(LoadInvoice(completer: completer, invoiceId: invoice.id)); - return completer.future.then((_) { - Scaffold.of(context).showSnackBar(SnackBar( - content: SnackBarRow( - message: AppLocalization.of(context).refreshComplete, - ))); - }); + final completer = snackBarCompleter( + context, AppLocalization.of(context).refreshComplete); + store.dispatch(LoadInvoices(completer: completer, force: true)); + return completer.future; } Future _viewPdf(BuildContext context) async { diff --git a/lib/ui/product/product_list_vm.dart b/lib/ui/product/product_list_vm.dart index bdaae87cd..7f8d279a7 100644 --- a/lib/ui/product/product_list_vm.dart +++ b/lib/ui/product/product_list_vm.dart @@ -55,23 +55,21 @@ class ProductListVM { static ProductListVM fromStore(Store store) { Future _handleRefresh(BuildContext context) { - final Completer completer = Completer(); - store.dispatch(LoadProducts(completer, true)); - return completer.future.then((_) { - Scaffold.of(context).showSnackBar(SnackBar( - content: SnackBarRow( - message: AppLocalization.of(context).refreshComplete, - ))); - }); + final completer = snackBarCompleter( + context, AppLocalization.of(context).refreshComplete); + store.dispatch(LoadProducts(completer: completer, force: true)); + return completer.future; } + final state = store.state; + return ProductListVM( - productList: memoizedFilteredProductList(store.state.productState.map, - store.state.productState.list, store.state.productListState), - productMap: store.state.productState.map, - isLoading: store.state.isLoading, - isLoaded: store.state.productState.isLoaded, - filter: store.state.productUIState.listUIState.filter, + productList: memoizedFilteredProductList(state.productState.map, + state.productState.list, state.productListState), + productMap: state.productState.map, + isLoading: state.isLoading, + isLoaded: state.productState.isLoaded, + filter: state.productUIState.listUIState.filter, onProductTap: (context, product) { store.dispatch(EditProduct(product: product, context: context)); }, diff --git a/lib/utils/completers.dart b/lib/utils/completers.dart index e57427112..4b3b4a666 100644 --- a/lib/utils/completers.dart +++ b/lib/utils/completers.dart @@ -2,9 +2,10 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart'; +import 'package:invoiceninja_flutter/utils/localization.dart'; -Completer snackBarCompleter(BuildContext context, String message) { - final Completer completer = Completer(); +Completer snackBarCompleter(BuildContext context, String message) { + final Completer completer = Completer(); completer.future.then((_) { Scaffold.of(context).showSnackBar(SnackBar( @@ -22,8 +23,8 @@ Completer snackBarCompleter(BuildContext context, String message) { return completer; } -Completer popCompleter(BuildContext context, String message) { - final Completer completer = Completer(); +Completer popCompleter(BuildContext context, String message) { + final Completer completer = Completer(); completer.future.then((_) { Navigator.of(context).pop(message);