From 9e54f08bde433bcb0c1cb3bd3b93e7022bbc7090 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jul 2018 11:20:22 +0300 Subject: [PATCH] Refactor --- lib/main.dart | 9 ++++----- lib/redux/client/client_actions.dart | 5 ++++- lib/redux/client/client_middleware.dart | 18 +++++++++--------- lib/redux/invoice/invoice_actions.dart | 5 ++++- lib/redux/invoice/invoice_middleware.dart | 18 +++++++++--------- lib/redux/product/product_actions.dart | 5 ++++- lib/redux/product/product_middleware.dart | 18 +++++++++--------- lib/ui/app/app_drawer.dart | 7 ++++--- 8 files changed, 47 insertions(+), 38 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 7ce28b2b9..82cc3fb30 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,7 +20,6 @@ import 'package:invoiceninja/ui/product/product_screen.dart'; import 'package:invoiceninja/redux/app/app_reducer.dart'; import 'package:invoiceninja/redux/app/app_state.dart'; import 'package:invoiceninja/redux/auth/auth_middleware.dart'; -import 'package:invoiceninja/redux/auth/auth_actions.dart'; import 'package:invoiceninja/redux/dashboard/dashboard_actions.dart'; import 'package:invoiceninja/redux/dashboard/dashboard_middleware.dart'; import 'package:invoiceninja/redux/product/product_actions.dart'; @@ -94,22 +93,22 @@ class _InvoiceNinjaAppState extends State { return LoginScreen(); }, DashboardScreen.route: (context) { - widget.store.dispatch(ViewDashboard()); + widget.store.dispatch(LoadDashboard()); return DashboardScreen(); }, ProductScreen.route: (context) { - widget.store.dispatch(ViewProductList()); + widget.store.dispatch(LoadProducts()); return ProductScreen(); }, ProductEditScreen.route: (context) => ProductEditScreen(), ClientScreen.route: (context) { - widget.store.dispatch(ViewClientList()); + widget.store.dispatch(LoadClients()); return ClientScreen(); }, ClientViewScreen.route: (context) => ClientViewScreen(), ClientEditScreen.route: (context) => ClientEditScreen(), InvoiceScreen.route: (context) { - widget.store.dispatch(ViewInvoiceList()); + widget.store.dispatch(LoadInvoices()); return InvoiceScreen(); }, InvoiceViewScreen.route: (context) => InvoiceViewScreen(), diff --git a/lib/redux/client/client_actions.dart b/lib/redux/client/client_actions.dart index 110b5b3f6..f4935c9cf 100644 --- a/lib/redux/client/client_actions.dart +++ b/lib/redux/client/client_actions.dart @@ -5,7 +5,10 @@ import 'package:invoiceninja/data/models/models.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja/redux/app/app_actions.dart'; -class ViewClientList implements PersistUI {} +class ViewClientList implements PersistUI { + final BuildContext context; + ViewClientList(this.context); +} class ViewClient implements PersistUI { final int clientId; diff --git a/lib/redux/client/client_middleware.dart b/lib/redux/client/client_middleware.dart index 665d6cc51..6a039c2a0 100644 --- a/lib/redux/client/client_middleware.dart +++ b/lib/redux/client/client_middleware.dart @@ -34,15 +34,6 @@ List> createStoreClientsMiddleware([ ]; } -Middleware _viewClientList() { - return (Store store, dynamic action, NextDispatcher next) { - store.dispatch(LoadClients()); - store.dispatch(UpdateCurrentRoute(ClientScreen.route)); - - next(action); - }; -} - Middleware _editClient() { return (Store store, dynamic action, NextDispatcher next) { next(action); @@ -61,6 +52,15 @@ Middleware _viewClient() { }; } +Middleware _viewClientList() { + return (Store store, dynamic action, NextDispatcher next) { + next(action); + + store.dispatch(UpdateCurrentRoute(ClientScreen.route)); + Navigator.of(action.context).pushReplacementNamed(ClientScreen.route); + }; +} + Middleware _archiveClient(ClientRepository repository) { return (Store store, dynamic action, NextDispatcher next) { var origClient = store.state.clientState.map[action.clientId]; diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index dfc5071c4..61f132bbc 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -5,7 +5,10 @@ import 'package:invoiceninja/data/models/models.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja/redux/app/app_actions.dart'; -class ViewInvoiceList implements PersistUI {} +class ViewInvoiceList implements PersistUI { + final BuildContext context; + ViewInvoiceList(this.context); +} class ViewInvoice implements PersistUI { final int invoiceId; diff --git a/lib/redux/invoice/invoice_middleware.dart b/lib/redux/invoice/invoice_middleware.dart index 746655045..2d95ae48b 100644 --- a/lib/redux/invoice/invoice_middleware.dart +++ b/lib/redux/invoice/invoice_middleware.dart @@ -36,15 +36,6 @@ List> createStoreInvoicesMiddleware([ ]; } -Middleware _viewInvoiceList() { - return (Store store, dynamic action, NextDispatcher next) { - store.dispatch(LoadInvoices()); - store.dispatch(UpdateCurrentRoute(InvoiceScreen.route)); - - next(action); - }; -} - Middleware _viewInvoice() { return (Store store, dynamic action, NextDispatcher next) { next(action); @@ -54,6 +45,15 @@ Middleware _viewInvoice() { }; } +Middleware _viewInvoiceList() { + return (Store store, dynamic action, NextDispatcher next) { + next(action); + + store.dispatch(UpdateCurrentRoute(InvoiceScreen.route)); + Navigator.of(action.context).pushReplacementNamed(InvoiceScreen.route); + }; +} + Middleware _editInvoice() { return (Store store, dynamic action, NextDispatcher next) { next(action); diff --git a/lib/redux/product/product_actions.dart b/lib/redux/product/product_actions.dart index 6c76e9cfb..e7eaf9ad0 100644 --- a/lib/redux/product/product_actions.dart +++ b/lib/redux/product/product_actions.dart @@ -4,7 +4,10 @@ import 'package:invoiceninja/data/models/models.dart'; import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja/redux/app/app_actions.dart'; -class ViewProductList implements PersistUI {} +class ViewProductList implements PersistUI { + final BuildContext context; + ViewProductList(this.context); +} class EditProduct implements PersistUI { final ProductEntity product; diff --git a/lib/redux/product/product_middleware.dart b/lib/redux/product/product_middleware.dart index 0718fe73d..51b8e4fcb 100644 --- a/lib/redux/product/product_middleware.dart +++ b/lib/redux/product/product_middleware.dart @@ -30,15 +30,6 @@ List> createStoreProductsMiddleware([ ]; } -Middleware _viewProductList() { - return (Store store, dynamic action, NextDispatcher next) { - store.dispatch(LoadProducts()); - store.dispatch(UpdateCurrentRoute(ProductScreen.route)); - - next(action); - }; -} - Middleware _editProduct() { return (Store store, dynamic action, NextDispatcher next) { next(action); @@ -48,6 +39,15 @@ Middleware _editProduct() { }; } +Middleware _viewProductList() { + return (Store store, dynamic action, NextDispatcher next) { + next(action); + + store.dispatch(UpdateCurrentRoute(ProductScreen.route)); + Navigator.of(action.context).pushReplacementNamed(ProductScreen.route); + }; +} + Middleware _archiveProduct(ProductRepository repository) { return (Store store, dynamic action, NextDispatcher next) { var origProduct = store.state.productState.map[action.productId]; diff --git a/lib/ui/app/app_drawer.dart b/lib/ui/app/app_drawer.dart index 06596678c..ff32cffcf 100644 --- a/lib/ui/app/app_drawer.dart +++ b/lib/ui/app/app_drawer.dart @@ -8,6 +8,7 @@ import 'package:invoiceninja/redux/dashboard/dashboard_actions.dart'; import 'package:invoiceninja/redux/invoice/invoice_actions.dart'; import 'package:invoiceninja/redux/product/product_actions.dart'; import 'package:invoiceninja/data/models/entities.dart'; +import 'package:invoiceninja/redux/ui/ui_actions.dart'; import 'package:invoiceninja/ui/app/app_drawer_vm.dart'; import 'package:invoiceninja/ui/client/client_screen.dart'; import 'package:invoiceninja/ui/invoice/invoice_screen.dart'; @@ -104,7 +105,7 @@ class AppDrawer extends StatelessWidget { DrawerTile( icon: FontAwesomeIcons.users, title: AppLocalization.of(context).clients, - onTap: () => navigator.pushReplacementNamed(ClientScreen.route), + onTap: () => store.dispatch(ViewClientList(context)), onCreateTap: () { navigator.pop(); store.dispatch( @@ -114,7 +115,7 @@ class AppDrawer extends StatelessWidget { DrawerTile( icon: FontAwesomeIcons.cube, title: AppLocalization.of(context).products, - onTap: () => navigator.pushReplacementNamed(ProductScreen.route), + onTap: () => store.dispatch(ViewProductList(context)), onCreateTap: () { navigator.pop(); store.dispatch( @@ -124,7 +125,7 @@ class AppDrawer extends StatelessWidget { DrawerTile( icon: FontAwesomeIcons.filePdfO, title: AppLocalization.of(context).invoices, - onTap: () => navigator.pushReplacementNamed(InvoiceScreen.route), + onTap: () => store.dispatch(ViewProductList(context)), onCreateTap: () { navigator.pop(); store.dispatch(