Correct persitence

This commit is contained in:
Hillel Coren 2021-11-04 10:10:12 +02:00
parent c4a0c956d3
commit 6c88a570cd
27 changed files with 32 additions and 26 deletions

View File

@ -152,6 +152,7 @@ const int kMillisecondsToRefreshActivities = 1000 * 60 * 60 * 24; // 1 day
const int kMillisecondsToRefreshStaticData = 1000 * 60 * 60 * 24; // 1 day const int kMillisecondsToRefreshStaticData = 1000 * 60 * 60 * 24; // 1 day
const int kMillisecondsToDebounceUpdate = 500; // .5 second const int kMillisecondsToDebounceUpdate = 500; // .5 second
const int kMillisecondsToDebounceSave = 1500; // 1.5 seconds const int kMillisecondsToDebounceSave = 1500; // 1.5 seconds
const int kMillisecondsToDebounceWrite = 3000; // 3 seconds
const String kLanguageEnglish = '1'; const String kLanguageEnglish = '1';

View File

@ -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/app/main_screen.dart';
import 'package:invoiceninja_flutter/ui/auth/login_vm.dart'; import 'package:invoiceninja_flutter/ui/auth/login_vm.dart';
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_screen_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/dialogs.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
@ -405,6 +406,8 @@ Middleware<AppState> _createPersistData(
}; };
} }
final _persistUIDebouncer =
Debouncer(milliseconds: kMillisecondsToDebounceWrite);
Middleware<AppState> _createPersistUI(PersistenceRepository uiRepository) { Middleware<AppState> _createPersistUI(PersistenceRepository uiRepository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) { return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as PersistUI; final action = dynamicAction as PersistUI;
@ -412,7 +415,9 @@ Middleware<AppState> _createPersistUI(PersistenceRepository uiRepository) {
next(action); next(action);
if (store.state.prefState.persistUI) { if (store.state.prefState.persistUI) {
_persistUIDebouncer.run(() {
uiRepository.saveUIState(store.state.uiState); uiRepository.saveUIState(store.state.uiState);
});
} }
}; };
} }

View File

@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class ViewClientList implements StopLoading { class ViewClientList implements PersistUI {
ViewClientList({ ViewClientList({
this.force = false, this.force = false,
}); });

View File

@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:invoiceninja_flutter/utils/dialogs.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewCompanyGatewayList implements StopLoading { class ViewCompanyGatewayList implements PersistUI {
ViewCompanyGatewayList({this.force = false}); ViewCompanyGatewayList({this.force = false});
final bool force; final bool force;

View File

@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class ViewCreditList implements StopLoading { class ViewCreditList implements PersistUI {
ViewCreditList({this.force = false}); ViewCreditList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewDesignList implements StopLoading { class ViewDesignList implements PersistUI {
ViewDesignList({ ViewDesignList({
this.force = false, this.force = false,
}); });

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewDocumentList implements StopLoading { class ViewDocumentList implements PersistUI {
ViewDocumentList({this.force = false}); ViewDocumentList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewExpenseList implements StopLoading { class ViewExpenseList implements PersistUI {
ViewExpenseList({this.force = false}); ViewExpenseList({this.force = false});
final bool force; final bool force;

View File

@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
class ViewExpenseCategoryList implements StopLoading { class ViewExpenseCategoryList implements PersistUI {
ViewExpenseCategoryList({ ViewExpenseCategoryList({
this.force = false, this.force = false,
}); });

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewGroupList implements StopLoading { class ViewGroupList implements PersistUI {
ViewGroupList({this.force = false}); ViewGroupList({this.force = false});
final bool force; final bool force;

View File

@ -14,7 +14,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class ViewInvoiceList implements StopLoading { class ViewInvoiceList implements PersistUI {
ViewInvoiceList({this.force = false}); ViewInvoiceList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewPaymentList implements StopLoading { class ViewPaymentList implements PersistUI {
ViewPaymentList({this.force = false}); ViewPaymentList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewPaymentTermList implements StopLoading { class ViewPaymentTermList implements PersistUI {
ViewPaymentTermList({ ViewPaymentTermList({
this.force = false, this.force = false,
}); });

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewProductList implements StopLoading { class ViewProductList implements PersistUI {
ViewProductList({this.force = false}); ViewProductList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewProjectList implements StopLoading { class ViewProjectList implements PersistUI {
ViewProjectList({this.force = false}); ViewProjectList({this.force = false});
final bool force; final bool force;

View File

@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class ViewQuoteList implements StopLoading { class ViewQuoteList implements PersistUI {
ViewQuoteList({this.force = false}); ViewQuoteList({this.force = false});
final bool force; final bool force;

View File

@ -10,7 +10,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
class ViewRecurringExpenseList implements StopLoading { class ViewRecurringExpenseList implements PersistUI {
ViewRecurringExpenseList({ ViewRecurringExpenseList({
this.force = false, this.force = false,
}); });

View File

@ -13,7 +13,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class ViewRecurringInvoiceList implements StopLoading { class ViewRecurringInvoiceList implements PersistUI {
ViewRecurringInvoiceList({ ViewRecurringInvoiceList({
this.force = false, this.force = false,
}); });

View File

@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
class ViewSubscriptionList implements StopLoading { class ViewSubscriptionList implements PersistUI {
ViewSubscriptionList({ ViewSubscriptionList({
this.force = false, this.force = false,
}); });

View File

@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewTaskList implements StopLoading { class ViewTaskList implements PersistUI {
ViewTaskList({this.force = false}); ViewTaskList({this.force = false});
final bool force; final bool force;

View File

@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
class ViewTaskStatusList implements StopLoading { class ViewTaskStatusList implements PersistUI {
ViewTaskStatusList({ ViewTaskStatusList({
this.force = false, this.force = false,
}); });

View File

@ -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/localization.dart';
import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/completers.dart';
class ViewTaxRateList implements StopLoading { class ViewTaxRateList implements PersistUI {
ViewTaxRateList({this.force = false}); ViewTaxRateList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewTokenList implements StopLoading { class ViewTokenList implements PersistUI {
ViewTokenList({ ViewTokenList({
this.force = false, this.force = false,
}); });

View File

@ -12,7 +12,7 @@ import 'package:invoiceninja_flutter/utils/dialogs.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/completers.dart';
class ViewUserList implements StopLoading { class ViewUserList implements PersistUI {
ViewUserList({this.force = false}); ViewUserList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewVendorList implements StopLoading { class ViewVendorList implements PersistUI {
ViewVendorList({this.force = false}); ViewVendorList({this.force = false});
final bool force; final bool force;

View File

@ -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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ViewWebhookList implements StopLoading { class ViewWebhookList implements PersistUI {
ViewWebhookList({ ViewWebhookList({
this.force = false, this.force = false,
}); });

View File

@ -9,7 +9,7 @@ import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart';
class ViewStubList implements StopLoading { class ViewStubList implements PersistUI {
ViewStubList({ ViewStubList({
this.force = false this.force = false
}); });