From 6c88a570cdab93c6040a5982e4a63377e91ef38a Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 4 Nov 2021 10:10:12 +0200 Subject: [PATCH] Correct persitence --- lib/constants.dart | 1 + lib/redux/app/app_middleware.dart | 7 ++++++- lib/redux/client/client_actions.dart | 2 +- lib/redux/company_gateway/company_gateway_actions.dart | 2 +- lib/redux/credit/credit_actions.dart | 2 +- lib/redux/design/design_actions.dart | 2 +- lib/redux/document/document_actions.dart | 2 +- lib/redux/expense/expense_actions.dart | 2 +- lib/redux/expense_category/expense_category_actions.dart | 2 +- lib/redux/group/group_actions.dart | 2 +- lib/redux/invoice/invoice_actions.dart | 2 +- lib/redux/payment/payment_actions.dart | 2 +- lib/redux/payment_term/payment_term_actions.dart | 2 +- lib/redux/product/product_actions.dart | 2 +- lib/redux/project/project_actions.dart | 2 +- lib/redux/quote/quote_actions.dart | 2 +- lib/redux/recurring_expense/recurring_expense_actions.dart | 2 +- lib/redux/recurring_invoice/recurring_invoice_actions.dart | 2 +- lib/redux/subscription/subscription_actions.dart | 2 +- lib/redux/task/task_actions.dart | 2 +- lib/redux/task_status/task_status_actions.dart | 2 +- lib/redux/tax_rate/tax_rate_actions.dart | 2 +- lib/redux/token/token_actions.dart | 2 +- lib/redux/user/user_actions.dart | 2 +- lib/redux/vendor/vendor_actions.dart | 2 +- lib/redux/webhook/webhook_actions.dart | 2 +- stubs/redux/stub/stub_actions | 2 +- 27 files changed, 32 insertions(+), 26 deletions(-) diff --git a/lib/constants.dart b/lib/constants.dart index a21fbf7f6..077c3c372 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -152,6 +152,7 @@ const int kMillisecondsToRefreshActivities = 1000 * 60 * 60 * 24; // 1 day const int kMillisecondsToRefreshStaticData = 1000 * 60 * 60 * 24; // 1 day const int kMillisecondsToDebounceUpdate = 500; // .5 second const int kMillisecondsToDebounceSave = 1500; // 1.5 seconds +const int kMillisecondsToDebounceWrite = 3000; // 3 seconds const String kLanguageEnglish = '1'; diff --git a/lib/redux/app/app_middleware.dart b/lib/redux/app/app_middleware.dart index bf1da36bf..e849daf0b 100644 --- a/lib/redux/app/app_middleware.dart +++ b/lib/redux/app/app_middleware.dart @@ -27,6 +27,7 @@ import 'package:invoiceninja_flutter/ui/app/app_builder.dart'; import 'package:invoiceninja_flutter/ui/app/main_screen.dart'; import 'package:invoiceninja_flutter/ui/auth/login_vm.dart'; import 'package:invoiceninja_flutter/ui/dashboard/dashboard_screen_vm.dart'; +import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; @@ -405,6 +406,8 @@ Middleware _createPersistData( }; } +final _persistUIDebouncer = + Debouncer(milliseconds: kMillisecondsToDebounceWrite); Middleware _createPersistUI(PersistenceRepository uiRepository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as PersistUI; @@ -412,7 +415,9 @@ Middleware _createPersistUI(PersistenceRepository uiRepository) { next(action); if (store.state.prefState.persistUI) { - uiRepository.saveUIState(store.state.uiState); + _persistUIDebouncer.run(() { + uiRepository.saveUIState(store.state.uiState); + }); } }; } diff --git a/lib/redux/client/client_actions.dart b/lib/redux/client/client_actions.dart index c20f24201..f30a3366a 100644 --- a/lib/redux/client/client_actions.dart +++ b/lib/redux/client/client_actions.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; -class ViewClientList implements StopLoading { +class ViewClientList implements PersistUI { ViewClientList({ this.force = false, }); diff --git a/lib/redux/company_gateway/company_gateway_actions.dart b/lib/redux/company_gateway/company_gateway_actions.dart index 7a6c9efac..65fc0f7f9 100644 --- a/lib/redux/company_gateway/company_gateway_actions.dart +++ b/lib/redux/company_gateway/company_gateway_actions.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewCompanyGatewayList implements StopLoading { +class ViewCompanyGatewayList implements PersistUI { ViewCompanyGatewayList({this.force = false}); final bool force; diff --git a/lib/redux/credit/credit_actions.dart b/lib/redux/credit/credit_actions.dart index fb44d43ee..f0519a93e 100644 --- a/lib/redux/credit/credit_actions.dart +++ b/lib/redux/credit/credit_actions.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; -class ViewCreditList implements StopLoading { +class ViewCreditList implements PersistUI { ViewCreditList({this.force = false}); final bool force; diff --git a/lib/redux/design/design_actions.dart b/lib/redux/design/design_actions.dart index 8791e9769..02ee375e6 100644 --- a/lib/redux/design/design_actions.dart +++ b/lib/redux/design/design_actions.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewDesignList implements StopLoading { +class ViewDesignList implements PersistUI { ViewDesignList({ this.force = false, }); diff --git a/lib/redux/document/document_actions.dart b/lib/redux/document/document_actions.dart index fa61ca9fd..600dd7351 100644 --- a/lib/redux/document/document_actions.dart +++ b/lib/redux/document/document_actions.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewDocumentList implements StopLoading { +class ViewDocumentList implements PersistUI { ViewDocumentList({this.force = false}); final bool force; diff --git a/lib/redux/expense/expense_actions.dart b/lib/redux/expense/expense_actions.dart index f1d2107a6..1253af5b8 100644 --- a/lib/redux/expense/expense_actions.dart +++ b/lib/redux/expense/expense_actions.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewExpenseList implements StopLoading { +class ViewExpenseList implements PersistUI { ViewExpenseList({this.force = false}); final bool force; diff --git a/lib/redux/expense_category/expense_category_actions.dart b/lib/redux/expense_category/expense_category_actions.dart index 3cee15176..f0b94e42a 100644 --- a/lib/redux/expense_category/expense_category_actions.dart +++ b/lib/redux/expense_category/expense_category_actions.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; -class ViewExpenseCategoryList implements StopLoading { +class ViewExpenseCategoryList implements PersistUI { ViewExpenseCategoryList({ this.force = false, }); diff --git a/lib/redux/group/group_actions.dart b/lib/redux/group/group_actions.dart index f8a10c498..e9cfc44b9 100644 --- a/lib/redux/group/group_actions.dart +++ b/lib/redux/group/group_actions.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewGroupList implements StopLoading { +class ViewGroupList implements PersistUI { ViewGroupList({this.force = false}); final bool force; diff --git a/lib/redux/invoice/invoice_actions.dart b/lib/redux/invoice/invoice_actions.dart index 7d95d17fd..5277a58c0 100644 --- a/lib/redux/invoice/invoice_actions.dart +++ b/lib/redux/invoice/invoice_actions.dart @@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; -class ViewInvoiceList implements StopLoading { +class ViewInvoiceList implements PersistUI { ViewInvoiceList({this.force = false}); final bool force; diff --git a/lib/redux/payment/payment_actions.dart b/lib/redux/payment/payment_actions.dart index 2a304ea8f..58c496f44 100644 --- a/lib/redux/payment/payment_actions.dart +++ b/lib/redux/payment/payment_actions.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewPaymentList implements StopLoading { +class ViewPaymentList implements PersistUI { ViewPaymentList({this.force = false}); final bool force; diff --git a/lib/redux/payment_term/payment_term_actions.dart b/lib/redux/payment_term/payment_term_actions.dart index a7bf2dd24..1b0411a48 100644 --- a/lib/redux/payment_term/payment_term_actions.dart +++ b/lib/redux/payment_term/payment_term_actions.dart @@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewPaymentTermList implements StopLoading { +class ViewPaymentTermList implements PersistUI { ViewPaymentTermList({ this.force = false, }); diff --git a/lib/redux/product/product_actions.dart b/lib/redux/product/product_actions.dart index 854326b2d..83fc1c564 100644 --- a/lib/redux/product/product_actions.dart +++ b/lib/redux/product/product_actions.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewProductList implements StopLoading { +class ViewProductList implements PersistUI { ViewProductList({this.force = false}); final bool force; diff --git a/lib/redux/project/project_actions.dart b/lib/redux/project/project_actions.dart index 653c0597b..77f398d45 100644 --- a/lib/redux/project/project_actions.dart +++ b/lib/redux/project/project_actions.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewProjectList implements StopLoading { +class ViewProjectList implements PersistUI { ViewProjectList({this.force = false}); final bool force; diff --git a/lib/redux/quote/quote_actions.dart b/lib/redux/quote/quote_actions.dart index 358d29c51..90df090e2 100644 --- a/lib/redux/quote/quote_actions.dart +++ b/lib/redux/quote/quote_actions.dart @@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; -class ViewQuoteList implements StopLoading { +class ViewQuoteList implements PersistUI { ViewQuoteList({this.force = false}); final bool force; diff --git a/lib/redux/recurring_expense/recurring_expense_actions.dart b/lib/redux/recurring_expense/recurring_expense_actions.dart index ef11ce80e..a09d93421 100644 --- a/lib/redux/recurring_expense/recurring_expense_actions.dart +++ b/lib/redux/recurring_expense/recurring_expense_actions.dart @@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; -class ViewRecurringExpenseList implements StopLoading { +class ViewRecurringExpenseList implements PersistUI { ViewRecurringExpenseList({ this.force = false, }); diff --git a/lib/redux/recurring_invoice/recurring_invoice_actions.dart b/lib/redux/recurring_invoice/recurring_invoice_actions.dart index 01a2ea0e1..1cda39fbc 100644 --- a/lib/redux/recurring_invoice/recurring_invoice_actions.dart +++ b/lib/redux/recurring_invoice/recurring_invoice_actions.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; -class ViewRecurringInvoiceList implements StopLoading { +class ViewRecurringInvoiceList implements PersistUI { ViewRecurringInvoiceList({ this.force = false, }); diff --git a/lib/redux/subscription/subscription_actions.dart b/lib/redux/subscription/subscription_actions.dart index 9c4d843cf..46301e455 100644 --- a/lib/redux/subscription/subscription_actions.dart +++ b/lib/redux/subscription/subscription_actions.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; -class ViewSubscriptionList implements StopLoading { +class ViewSubscriptionList implements PersistUI { ViewSubscriptionList({ this.force = false, }); diff --git a/lib/redux/task/task_actions.dart b/lib/redux/task/task_actions.dart index 408397f57..f60257d20 100644 --- a/lib/redux/task/task_actions.dart +++ b/lib/redux/task/task_actions.dart @@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewTaskList implements StopLoading { +class ViewTaskList implements PersistUI { ViewTaskList({this.force = false}); final bool force; diff --git a/lib/redux/task_status/task_status_actions.dart b/lib/redux/task_status/task_status_actions.dart index 56ec7cdbb..cce871cf2 100644 --- a/lib/redux/task_status/task_status_actions.dart +++ b/lib/redux/task_status/task_status_actions.dart @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; -class ViewTaskStatusList implements StopLoading { +class ViewTaskStatusList implements PersistUI { ViewTaskStatusList({ this.force = false, }); diff --git a/lib/redux/tax_rate/tax_rate_actions.dart b/lib/redux/tax_rate/tax_rate_actions.dart index 84212222a..67270e068 100644 --- a/lib/redux/tax_rate/tax_rate_actions.dart +++ b/lib/redux/tax_rate/tax_rate_actions.dart @@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; -class ViewTaxRateList implements StopLoading { +class ViewTaxRateList implements PersistUI { ViewTaxRateList({this.force = false}); final bool force; diff --git a/lib/redux/token/token_actions.dart b/lib/redux/token/token_actions.dart index 0005b4e51..4eca94034 100644 --- a/lib/redux/token/token_actions.dart +++ b/lib/redux/token/token_actions.dart @@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewTokenList implements StopLoading { +class ViewTokenList implements PersistUI { ViewTokenList({ this.force = false, }); diff --git a/lib/redux/user/user_actions.dart b/lib/redux/user/user_actions.dart index f111c0b97..e0392253c 100644 --- a/lib/redux/user/user_actions.dart +++ b/lib/redux/user/user_actions.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/completers.dart'; -class ViewUserList implements StopLoading { +class ViewUserList implements PersistUI { ViewUserList({this.force = false}); final bool force; diff --git a/lib/redux/vendor/vendor_actions.dart b/lib/redux/vendor/vendor_actions.dart index b53ddf081..e618c1ec8 100644 --- a/lib/redux/vendor/vendor_actions.dart +++ b/lib/redux/vendor/vendor_actions.dart @@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewVendorList implements StopLoading { +class ViewVendorList implements PersistUI { ViewVendorList({this.force = false}); final bool force; diff --git a/lib/redux/webhook/webhook_actions.dart b/lib/redux/webhook/webhook_actions.dart index 118383a97..52afa8d1e 100644 --- a/lib/redux/webhook/webhook_actions.dart +++ b/lib/redux/webhook/webhook_actions.dart @@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; -class ViewWebhookList implements StopLoading { +class ViewWebhookList implements PersistUI { ViewWebhookList({ this.force = false, }); diff --git a/stubs/redux/stub/stub_actions b/stubs/redux/stub/stub_actions index 8abfd3982..6c2d48393 100644 --- a/stubs/redux/stub/stub_actions +++ b/stubs/redux/stub/stub_actions @@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; -class ViewStubList implements StopLoading { +class ViewStubList implements PersistUI { ViewStubList({ this.force = false });