Skip to content

Commit 4eb65f1

Browse files
author
Jean 28518
committed
Faster loading of entries -> parallel futures
1 parent de0eac0 commit 4eb65f1

1 file changed

Lines changed: 44 additions & 42 deletions

File tree

lib/services/main_search_loader.dart

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -29,80 +29,78 @@ class _MainSearchLoaderState extends State<MainSearchLoader> {
2929
Future clearOldEntries = configHandler.clearOldDatesOfOpenendEntries();
3030

3131
// prepare Action Entries
32-
ActionEntryList returnValue = ActionEntryList(entries: []);
33-
returnValue.entries.addAll(getRecommendations(context));
34-
returnValue.entries.addAll(getBasicEntries(context));
32+
33+
List<Future<List<ActionEntry>>> futures = [];
3534

3635
if (configHandler.getValueUnsafe("search_filter_basic_folders", true)) {
3736
print("Loading basic folders");
38-
var folderEntries = await Linux.getAllFolderEntriesOfUser(context)
39-
.timeout(
40-
timeoutDuration,
41-
onTimeout: () =>
42-
_onTimeoutOfSearchLoadingModule("folderEntries"));
43-
returnValue.entries.addAll(folderEntries);
37+
futures.add(Linux.getAllFolderEntriesOfUser(context).timeout(
38+
timeoutDuration,
39+
onTimeout: () =>
40+
_onTimeoutOfSearchLoadingModule("applicationEntries")));
41+
// future1 = Linux.getAllFolderEntriesOfUser(context);
4442
}
43+
4544
if (configHandler.getValueUnsafe("search_filter_applications", true)) {
4645
print("Loading applications");
47-
var applicationEntries = await Linux.getAllAvailableApplications()
48-
.timeout(timeoutDuration,
49-
onTimeout: () =>
50-
_onTimeoutOfSearchLoadingModule("applicationEntries"));
51-
returnValue.entries.addAll(applicationEntries);
46+
futures.add(Linux.getAllAvailableApplications().timeout(timeoutDuration,
47+
onTimeout: () =>
48+
_onTimeoutOfSearchLoadingModule("applicationEntries")));
5249
}
5350

5451
if (configHandler.getValueUnsafe(
5552
"search_filter_recently_used_files_and_folders", true)) {
5653
print("Loading recently used files and folders");
57-
var recentFiles = await Linux.getRecentFiles(context).timeout(
58-
timeoutDuration,
59-
onTimeout: () => _onTimeoutOfSearchLoadingModule("recentFiles"));
60-
returnValue.entries.addAll(recentFiles);
54+
futures.add(Linux.getRecentFiles(context).timeout(timeoutDuration,
55+
onTimeout: () => _onTimeoutOfSearchLoadingModule("recentFiles")));
6156
}
6257

6358
if (configHandler.getValueUnsafe(
6459
"search_filter_favorite_files_and_folder_bookmarks", true)) {
6560
print("Loading favorite files and folder bookmarks");
66-
var favoriteFiles = await Linux.getFavoriteFiles(context).timeout(
67-
timeoutDuration,
68-
onTimeout: () => _onTimeoutOfSearchLoadingModule("favoriteFiles"));
69-
returnValue.entries.addAll(favoriteFiles);
61+
futures.add(Linux.getFavoriteFiles(context).timeout(timeoutDuration,
62+
onTimeout: () => _onTimeoutOfSearchLoadingModule("favoriteFiles")));
7063
}
7164

7265
if (configHandler.getValueUnsafe("search_filter_bookmarks", true)) {
7366
print("Loading browser bookmarks");
74-
var browserBookmarks = await Linux.getBrowserBookmarks(context).timeout(
75-
timeoutDuration,
76-
onTimeout: () => _onTimeoutOfSearchLoadingModule("browserBookmarks"));
77-
returnValue.entries.addAll(browserBookmarks);
78-
}
79-
80-
if (configHandler.getValueUnsafe(
81-
"search_filter_recently_used_files_and_folders", true)) {
82-
print("Loading recently used files and folders");
83-
var additionalFolders =
84-
Linux.getFoldersOfActionEntries(context, returnValue.entries);
85-
returnValue.entries.addAll(additionalFolders);
67+
futures.add(Linux.getBrowserBookmarks(context).timeout(timeoutDuration,
68+
onTimeout: () =>
69+
_onTimeoutOfSearchLoadingModule("browserBookmarks")));
8670
}
8771

8872
// Flatpak Index Installations
8973
if (configHandler.getValueUnsafe("search_filter_install_software", true)) {
9074
print("Loading flatpaks");
91-
var flatpaks = await Linux.getAvailableFlatpaks(context).timeout(
92-
timeoutDuration,
93-
onTimeout: () => _onTimeoutOfSearchLoadingModule("flatpaks"));
94-
returnValue.entries.addAll(flatpaks);
75+
futures.add(Linux.getAvailableFlatpaks(context).timeout(timeoutDuration,
76+
onTimeout: () => _onTimeoutOfSearchLoadingModule("flatpaks")));
9577
}
9678

9779
// Deinstallation Entries.
9880
if (configHandler.getValueUnsafe(
9981
"search_filter_uninstall_software", true)) {
10082
print("Loading uninstall entries");
101-
var actions = await Linux.getUninstallEntries(context).timeout(
102-
timeoutDuration,
83+
futures.add(Linux.getUninstallEntries(context).timeout(timeoutDuration,
10384
onTimeout: () =>
104-
_onTimeoutOfSearchLoadingModule("uninstall_entries"));
105-
returnValue.entries.addAll(actions);
85+
_onTimeoutOfSearchLoadingModule("uninstall_entries")));
86+
}
87+
88+
ActionEntryList returnValue = ActionEntryList(entries: []);
89+
returnValue.entries.addAll(getRecommendations(context));
90+
returnValue.entries.addAll(getBasicEntries(context));
91+
92+
// Collect all Futures in our returnValue.
93+
for (Future<List<ActionEntry>> future in futures) {
94+
returnValue.entries.addAll(await future);
95+
}
96+
97+
if (configHandler.getValueUnsafe(
98+
"search_filter_recently_used_files_and_folders", true)) {
99+
print("Loading recently used files and folders");
100+
var additionalFolders =
101+
Linux.getFoldersOfActionEntries(context, returnValue.entries);
102+
print("Finished: search_filter_recently_used_files_and_folders");
103+
returnValue.entries.addAll(additionalFolders);
106104
}
107105

108106
// Remove action entries for specific environments
@@ -123,6 +121,10 @@ class _MainSearchLoaderState extends State<MainSearchLoader> {
123121
await configHandler.setValue("runFirstStartUp", false);
124122
await clearOldEntries;
125123

124+
// EntryCache.saveEntries(returnValue.entries);
125+
126+
// returnValue = EntryCache.loadEntries();
127+
126128
return returnValue;
127129
}
128130

0 commit comments

Comments
 (0)