From 5d9645eaffc808b16a3878b1490de65723db6b05 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sun, 31 Dec 2023 23:41:46 -0500 Subject: [PATCH] Save Search Preferences (#1226) --- lib/pages/add_app.dart | 5 ++++- lib/pages/import_export.dart | 14 ++++++++++---- lib/providers/settings_provider.dart | 9 +++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/pages/add_app.dart b/lib/pages/add_app.dart index fe141f8..6c4b9a3 100644 --- a/lib/pages/add_app.dart +++ b/lib/pages/add_app.dart @@ -286,10 +286,14 @@ class AddAppPageState extends State { selectedByDefault: true, onlyOneSelectionAllowed: false, titlesAreLinks: false, + deselectThese: settingsProvider.searchDeselected, ); }) ?? []; if (searchSources.isNotEmpty) { + settingsProvider.searchDeselected = sourceStrings.keys + .where((s) => !searchSources.contains(s)) + .toList(); var results = await Future.wait(sourceProvider.sources .where((e) => searchSources.contains(e.name)) .map((e) async { @@ -306,7 +310,6 @@ class AddAppPageState extends State { } })); - // .then((results) async { // Interleave results instead of simple reduce Map> res = {}; var si = 0; diff --git a/lib/pages/import_export.dart b/lib/pages/import_export.dart index 635c720..4672d66 100644 --- a/lib/pages/import_export.dart +++ b/lib/pages/import_export.dart @@ -604,11 +604,13 @@ class SelectionModal extends StatefulWidget { this.selectedByDefault = true, this.onlyOneSelectionAllowed = false, this.titlesAreLinks = true, - this.title}); + this.title, + this.deselectThese = const []}); String? title; Map> entries; bool selectedByDefault; + List deselectThese; bool onlyOneSelectionAllowed; bool titlesAreLinks; @@ -622,9 +624,13 @@ class _SelectionModalState extends State { @override void initState() { super.initState(); - for (var url in widget.entries.entries) { - entrySelections.putIfAbsent(url, - () => widget.selectedByDefault && !widget.onlyOneSelectionAllowed); + for (var entry in widget.entries.entries) { + entrySelections.putIfAbsent( + entry, + () => + widget.selectedByDefault && + !widget.onlyOneSelectionAllowed && + !widget.deselectThese.contains(entry.key)); } if (widget.selectedByDefault && widget.onlyOneSelectionAllowed) { selectOnlyOne(widget.entries.entries.first.key); diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 0fb6d2a..2da2366 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -446,4 +446,13 @@ class SettingsProvider with ChangeNotifier { prefs?.setBool('parallelDownloads', val); notifyListeners(); } + + List get searchDeselected { + return prefs?.getStringList('searchDeselected') ?? []; + } + + set searchDeselected(List list) { + prefs?.setStringList('searchDeselected', list); + notifyListeners(); + } }