diff --git a/apps/weblibre/lib/core/providers/persisted_bool.dart b/apps/weblibre/lib/core/providers/persisted_bool.dart index 818cabd1..8f9e5819 100644 --- a/apps/weblibre/lib/core/providers/persisted_bool.dart +++ b/apps/weblibre/lib/core/providers/persisted_bool.dart @@ -27,23 +27,41 @@ import 'package:weblibre/features/user/data/providers.dart'; part 'persisted_bool.g.dart'; enum PersistedBoolKey { - extensionsExpanded(key: 'ExtensionsExpanded', defaultValue: false), - connectionsExpanded(key: 'ConnectionsExpanded', defaultValue: true), + extensionsExpanded( + key: 'ExtensionsExpanded', + defaultValue: false, + cacheTime: StorageCacheTime(Duration(days: 30)), + ), + connectionsExpanded( + key: 'ConnectionsExpanded', + defaultValue: false, + cacheTime: StorageCacheTime(Duration(days: 30)), + ), searchSuggestionsExpanded( key: 'SearchSuggestionsExpanded', defaultValue: true, + cacheTime: StorageCacheTime(Duration(days: 30)), + ), + infoboxExpanded( + key: 'InfoboxExpanded', + defaultValue: true, + cacheTime: StorageCacheTime(Duration(days: 30)), ), - infoboxExpanded(key: 'InfoboxExpanded', defaultValue: true), tabSuggestions(key: 'TabSuggestions', defaultValue: false), supporterBannerDismissed( key: 'SupporterBannerDismissed', defaultValue: false, ); - const PersistedBoolKey({required this.key, required this.defaultValue}); + const PersistedBoolKey({ + required this.key, + required this.defaultValue, + this.cacheTime = StorageCacheTime.unsafe_forever, + }); final String key; final bool defaultValue; + final StorageCacheTime cacheTime; } @Riverpod(keepAlive: true) @@ -58,6 +76,7 @@ class PersistedBool extends _$PersistedBool { persist( ref.watch(riverpodDatabaseStorageProvider), key: key.key, + options: StorageOptions(cacheTime: key.cacheTime), encode: (state) => jsonEncode([state]), decode: (encoded) => (jsonDecode(encoded) as List).first as bool, ); diff --git a/apps/weblibre/lib/features/addons/domain/providers.dart b/apps/weblibre/lib/features/addons/domain/providers.dart index ac966aab..2878654e 100644 --- a/apps/weblibre/lib/features/addons/domain/providers.dart +++ b/apps/weblibre/lib/features/addons/domain/providers.dart @@ -348,6 +348,7 @@ class PinnedAddonIds extends _$PinnedAddonIds { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'PinnedAddonIds', + options: const StorageOptions(cacheTime: StorageCacheTime.unsafe_forever), encode: (state) => jsonEncode(state.toList()), decode: (encoded) => (jsonDecode(encoded) as List).cast().toSet(), diff --git a/apps/weblibre/lib/features/geckoview/features/bookmarks/domain/providers/bookmark_list_ui_state.dart b/apps/weblibre/lib/features/geckoview/features/bookmarks/domain/providers/bookmark_list_ui_state.dart index af77396e..810ece15 100644 --- a/apps/weblibre/lib/features/geckoview/features/bookmarks/domain/providers/bookmark_list_ui_state.dart +++ b/apps/weblibre/lib/features/geckoview/features/bookmarks/domain/providers/bookmark_list_ui_state.dart @@ -34,6 +34,7 @@ class BookmarkListUiStateNotifier extends _$BookmarkListUiStateNotifier { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'BookmarkListUiState', + options: const StorageOptions(cacheTime: StorageCacheTime.unsafe_forever), ); return stateOrNull ?? BookmarkListUiState(); diff --git a/apps/weblibre/lib/features/geckoview/features/browser/presentation/controllers/tab_view_controllers.dart b/apps/weblibre/lib/features/geckoview/features/browser/presentation/controllers/tab_view_controllers.dart index f3cc281b..8b629401 100644 --- a/apps/weblibre/lib/features/geckoview/features/browser/presentation/controllers/tab_view_controllers.dart +++ b/apps/weblibre/lib/features/geckoview/features/browser/presentation/controllers/tab_view_controllers.dart @@ -54,6 +54,7 @@ class TabsViewModeController extends _$TabsViewModeController { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'TabsViewMode', + options: const StorageOptions(cacheTime: StorageCacheTime.unsafe_forever), encode: (state) => jsonEncode([state.name]), decode: (encoded) { final name = (jsonDecode(encoded) as List).first as String; @@ -101,6 +102,9 @@ class TabViewFilterController extends _$TabViewFilterController { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'TabViewFilterOptions', + options: const StorageOptions( + cacheTime: StorageCacheTime(Duration(days: 7)), + ), ); return stateOrNull ?? TabViewFilterOptions.withDefaults(); diff --git a/apps/weblibre/lib/features/geckoview/features/history/domain/providers.dart b/apps/weblibre/lib/features/geckoview/features/history/domain/providers.dart index 3162c04b..8ba53663 100644 --- a/apps/weblibre/lib/features/geckoview/features/history/domain/providers.dart +++ b/apps/weblibre/lib/features/geckoview/features/history/domain/providers.dart @@ -61,6 +61,9 @@ class HistoryVisitsFilter extends _$HistoryVisitsFilter { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'HistoryVisitsFilterOptions', + options: const StorageOptions( + cacheTime: StorageCacheTime(Duration(days: 7)), + ), ); return stateOrNull ?? HistoryFilterOptions.withDefaults(); @@ -86,6 +89,9 @@ class HistoryDownloadsFilter extends _$HistoryDownloadsFilter { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'HistoryDownloadsFilterOptions', + options: const StorageOptions( + cacheTime: StorageCacheTime(Duration(days: 7)), + ), ); return stateOrNull ?? diff --git a/apps/weblibre/lib/features/geckoview/features/search/domain/providers/search_module_order.dart b/apps/weblibre/lib/features/geckoview/features/search/domain/providers/search_module_order.dart index 49d112d2..e7a3dd3d 100644 --- a/apps/weblibre/lib/features/geckoview/features/search/domain/providers/search_module_order.dart +++ b/apps/weblibre/lib/features/geckoview/features/search/domain/providers/search_module_order.dart @@ -96,6 +96,7 @@ class SearchModuleOrder extends _$SearchModuleOrder { persist( ref.watch(riverpodDatabaseStorageProvider), key: group.key, + options: const StorageOptions(cacheTime: StorageCacheTime.unsafe_forever), encode: (state) => jsonEncode(state.map((e) => e.toJson()).toList()), decode: (encoded) { final decoded = (jsonDecode(encoded) as List) diff --git a/apps/weblibre/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart b/apps/weblibre/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart index 0a5ad8f1..c76dc80e 100644 --- a/apps/weblibre/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart +++ b/apps/weblibre/lib/features/geckoview/features/tabs/domain/providers/selected_container.dart @@ -90,6 +90,7 @@ class SelectedContainer extends _$SelectedContainer { final persistResult = persist( ref.watch(riverpodDatabaseStorageProvider), key: 'SelectedContainer', + options: const StorageOptions(cacheTime: StorageCacheTime.unsafe_forever), encode: (state) => jsonEncode([state]), decode: (encoded) => (jsonDecode(encoded) as List).first as String?, diff --git a/apps/weblibre/lib/features/search_credits/domain/repositories/web_search_settings.dart b/apps/weblibre/lib/features/search_credits/domain/repositories/web_search_settings.dart index e2362135..7ab4e3ab 100644 --- a/apps/weblibre/lib/features/search_credits/domain/repositories/web_search_settings.dart +++ b/apps/weblibre/lib/features/search_credits/domain/repositories/web_search_settings.dart @@ -59,6 +59,7 @@ class WebSearchSettingsController extends _$WebSearchSettingsController { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'WebSearchSettings', + options: const StorageOptions(cacheTime: StorageCacheTime.unsafe_forever), ); return stateOrNull ?? WebSearchSettings.withDefaults(); diff --git a/apps/weblibre/lib/features/small_web/presentation/controllers/small_web_session_controller.dart b/apps/weblibre/lib/features/small_web/presentation/controllers/small_web_session_controller.dart index 48748be7..c5006e82 100644 --- a/apps/weblibre/lib/features/small_web/presentation/controllers/small_web_session_controller.dart +++ b/apps/weblibre/lib/features/small_web/presentation/controllers/small_web_session_controller.dart @@ -113,6 +113,9 @@ class SmallWebSessionController extends _$SmallWebSessionController { final persistFuture = persist( ref.watch(riverpodDatabaseStorageProvider), key: 'SmallWebSessionState', + options: const StorageOptions( + cacheTime: StorageCacheTime(Duration(days: 30)), + ), encode: (state) => jsonEncode( (state.value ?? SmallWebSessionState.initial(SmallWebSourceKind.kagi)) .toJson(), diff --git a/apps/weblibre/lib/features/user/domain/providers/backup_directory.dart b/apps/weblibre/lib/features/user/domain/providers/backup_directory.dart index 19a152a0..7e1e9a5a 100644 --- a/apps/weblibre/lib/features/user/domain/providers/backup_directory.dart +++ b/apps/weblibre/lib/features/user/domain/providers/backup_directory.dart @@ -34,6 +34,7 @@ class BackupDirectoryUri extends _$BackupDirectoryUri { persist( ref.watch(riverpodDatabaseStorageProvider), key: 'BackupDirectoryUri', + options: const StorageOptions(cacheTime: StorageCacheTime.unsafe_forever), encode: (state) => state?.toString() ?? '', decode: (encoded) => encoded.isEmpty ? null : Uri.parse(encoded), );