From 280e0f7e9e9819f75db6b005f8a94267a919ef70 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 23 Sep 2019 21:20:10 +0300 Subject: [PATCH] Fix loading data --- lib/main.dart | 20 +++++++++++++++----- lib/redux/client/client_middleware.dart | 2 ++ lib/redux/expense/expense_middleware.dart | 2 ++ lib/redux/invoice/invoice_middleware.dart | 2 ++ lib/redux/payment/payment_middleware.dart | 2 ++ lib/redux/product/product_middleware.dart | 2 ++ lib/redux/project/project_middleware.dart | 2 ++ lib/redux/quote/quote_middleware.dart | 2 ++ lib/redux/task/task_middleware.dart | 2 ++ lib/redux/vendor/vendor_middleware.dart | 2 ++ stubs/redux/stub/stub_middleware | 14 +++++++++++++- 11 files changed, 46 insertions(+), 6 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 2fb099b87..6db182703 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -301,31 +301,41 @@ class InvoiceNinjaAppState extends State { InvoiceEmailScreen.route: (context) => InvoiceEmailScreen(), // STARTER: routes - do not remove comment DocumentScreen.route: (context) { - widget.store.dispatch(LoadDocuments()); + if (widget.store.state.documentState.isStale) { + widget.store.dispatch(LoadDocuments()); + } return DocumentScreen(); }, DocumentViewScreen.route: (context) => DocumentViewScreen(), DocumentEditScreen.route: (context) => DocumentEditScreen(), ExpenseScreen.route: (context) { - widget.store.dispatch(LoadExpenses()); + if (widget.store.state.expenseState.isStale) { + widget.store.dispatch(LoadExpenses()); + } return ExpenseScreen(); }, ExpenseViewScreen.route: (context) => ExpenseViewScreen(), ExpenseEditScreen.route: (context) => ExpenseEditScreen(), VendorScreen.route: (context) { - widget.store.dispatch(LoadVendors()); + if (widget.store.state.vendorState.isStale) { + widget.store.dispatch(LoadVendors()); + } return VendorScreen(); }, VendorViewScreen.route: (context) => VendorViewScreen(), VendorEditScreen.route: (context) => VendorEditScreen(), TaskScreen.route: (context) { - widget.store.dispatch(LoadTasks()); + if (widget.store.state.taskState.isStale) { + widget.store.dispatch(LoadTasks()); + } return TaskScreen(); }, TaskViewScreen.route: (context) => TaskViewScreen(), TaskEditScreen.route: (context) => TaskEditScreen(), ProjectScreen.route: (context) { - widget.store.dispatch(LoadProjects()); + if (widget.store.state.projectState.isStale) { + widget.store.dispatch(LoadProjects()); + } return ProjectScreen(); }, ProjectViewScreen.route: (context) => ProjectViewScreen(), diff --git a/lib/redux/client/client_middleware.dart b/lib/redux/client/client_middleware.dart index e931ec1b2..ac67a4bb1 100644 --- a/lib/redux/client/client_middleware.dart +++ b/lib/redux/client/client_middleware.dart @@ -94,6 +94,8 @@ Middleware _viewClientList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( ClientScreen.route, (Route route) => false); + } else if (store.state.clientState.isStale) { + store.dispatch(LoadClients()); } }; } diff --git a/lib/redux/expense/expense_middleware.dart b/lib/redux/expense/expense_middleware.dart index d671b21a0..3081646fe 100644 --- a/lib/redux/expense/expense_middleware.dart +++ b/lib/redux/expense/expense_middleware.dart @@ -101,6 +101,8 @@ Middleware _viewExpenseList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( ExpenseScreen.route, (Route route) => false); + } else if (store.state.expenseState.isStale) { + store.dispatch(LoadExpenses()); } }; } diff --git a/lib/redux/invoice/invoice_middleware.dart b/lib/redux/invoice/invoice_middleware.dart index 23c0b5dfc..cb14da41f 100644 --- a/lib/redux/invoice/invoice_middleware.dart +++ b/lib/redux/invoice/invoice_middleware.dart @@ -65,6 +65,8 @@ Middleware _viewInvoiceList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( InvoiceScreen.route, (Route route) => false); + } else if (store.state.invoiceState.isStale) { + store.dispatch(LoadInvoices()); } }; } diff --git a/lib/redux/payment/payment_middleware.dart b/lib/redux/payment/payment_middleware.dart index 632978689..1fa1e1358 100644 --- a/lib/redux/payment/payment_middleware.dart +++ b/lib/redux/payment/payment_middleware.dart @@ -100,6 +100,8 @@ Middleware _viewPaymentList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( PaymentScreen.route, (Route route) => false); + } else if (store.state.paymentState.isStale) { + store.dispatch(LoadPayments()); } }; } diff --git a/lib/redux/product/product_middleware.dart b/lib/redux/product/product_middleware.dart index d30b3d65f..699ea7d0c 100644 --- a/lib/redux/product/product_middleware.dart +++ b/lib/redux/product/product_middleware.dart @@ -92,6 +92,8 @@ Middleware _viewProductList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( ProductScreen.route, (Route route) => false); + } else if (store.state.productState.isStale) { + store.dispatch(LoadProducts()); } }; } diff --git a/lib/redux/project/project_middleware.dart b/lib/redux/project/project_middleware.dart index eb24851dd..eb141e4c3 100644 --- a/lib/redux/project/project_middleware.dart +++ b/lib/redux/project/project_middleware.dart @@ -101,6 +101,8 @@ Middleware _viewProjectList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( ProjectScreen.route, (Route route) => false); + } else if (store.state.projectState.isStale) { + store.dispatch(LoadProjects()); } }; } diff --git a/lib/redux/quote/quote_middleware.dart b/lib/redux/quote/quote_middleware.dart index 63b8212c7..76ffddb71 100644 --- a/lib/redux/quote/quote_middleware.dart +++ b/lib/redux/quote/quote_middleware.dart @@ -78,6 +78,8 @@ Middleware _viewQuoteList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( QuoteScreen.route, (Route route) => false); + } else if (store.state.quoteState.isStale) { + store.dispatch(LoadQuotes()); } }; } diff --git a/lib/redux/task/task_middleware.dart b/lib/redux/task/task_middleware.dart index e65736ff0..8331e7cff 100644 --- a/lib/redux/task/task_middleware.dart +++ b/lib/redux/task/task_middleware.dart @@ -100,6 +100,8 @@ Middleware _viewTaskList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( TaskScreen.route, (Route route) => false); + } else if (store.state.taskState.isStale) { + store.dispatch(LoadTasks()); } }; } diff --git a/lib/redux/vendor/vendor_middleware.dart b/lib/redux/vendor/vendor_middleware.dart index 5ddebdfc1..56c990c7e 100644 --- a/lib/redux/vendor/vendor_middleware.dart +++ b/lib/redux/vendor/vendor_middleware.dart @@ -101,6 +101,8 @@ Middleware _viewVendorList() { if (isMobile(action.context)) { Navigator.of(action.context).pushNamedAndRemoveUntil( VendorScreen.route, (Route route) => false); + } else if (store.state.vendorState.isStale) { + store.dispatch(LoadVendors()); } }; } diff --git a/stubs/redux/stub/stub_middleware b/stubs/redux/stub/stub_middleware index 703fea1e7..6ee4e61c4 100644 --- a/stubs/redux/stub/stub_middleware +++ b/stubs/redux/stub/stub_middleware @@ -72,11 +72,23 @@ Middleware _viewStub() { Middleware _viewStubList() { return (Store store, dynamic dynamicAction, NextDispatcher next) { + final action = dynamicAction as ViewStubList; + + if (hasChanges( + store: store, context: action.context, force: action.force)) { + return; + } + next(action); store.dispatch(UpdateCurrentRoute(StubScreen.route)); - Navigator.of(action.context).pushNamedAndRemoveUntil(StubScreen.route, (Route route) => false); + if (isMobile(action.context)) { + Navigator.of(action.context).pushNamedAndRemoveUntil( + StubScreen.route, (Route route) => false); + } else if (store.state.stubState.isStale) { + store.dispatch(LoadStubs()); + } }; }