1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 13:32:50 -05:00

launcher v2: some optims on meta performance

- limit plugin results to 10
- longer debounce
- search plugins when chars > 1
This commit is contained in:
bbedward
2026-01-21 14:20:12 -05:00
parent 6ac2a305f7
commit 7a7af775c2

View File

@@ -176,9 +176,11 @@ Item {
pluginViewPreferences = prefs; pluginViewPreferences = prefs;
} }
property int _searchVersion: 0
Timer { Timer {
id: searchDebounce id: searchDebounce
interval: 80 interval: searchMode === "all" && searchQuery.length > 0 ? 120 : 60
onTriggered: root.performSearch() onTriggered: root.performSearch()
} }
@@ -193,6 +195,7 @@ Item {
} }
function setSearchQuery(query) { function setSearchQuery(query) {
_searchVersion++;
searchQuery = query; searchQuery = query;
searchDebounce.restart(); searchDebounce.restart();
@@ -261,6 +264,7 @@ Item {
} }
function performSearch() { function performSearch() {
var currentVersion = _searchVersion;
isSearching = true; isSearching = true;
var cachedSections = AppSearchService.getCachedDefaultSections(); var cachedSections = AppSearchService.getCachedDefaultSections();
@@ -430,20 +434,25 @@ Item {
allItems = allItems.concat(apps); allItems = allItems.concat(apps);
if (searchMode === "all") { if (searchMode === "all") {
if (searchQuery) { var includePlugins = !searchQuery || searchQuery.length >= 2;
if (searchQuery && includePlugins) {
var allPluginsOrdered = getAllVisiblePluginsOrdered(); var allPluginsOrdered = getAllVisiblePluginsOrdered();
var maxPerPlugin = 10;
for (var i = 0; i < allPluginsOrdered.length; i++) { for (var i = 0; i < allPluginsOrdered.length; i++) {
var plugin = allPluginsOrdered[i]; var plugin = allPluginsOrdered[i];
if (plugin.isBuiltIn) { if (plugin.isBuiltIn) {
var blItems = AppSearchService.getBuiltInLauncherItems(plugin.id, searchQuery); var blItems = AppSearchService.getBuiltInLauncherItems(plugin.id, searchQuery);
for (var j = 0; j < blItems.length; j++) var blLimit = Math.min(blItems.length, maxPerPlugin);
for (var j = 0; j < blLimit; j++)
allItems.push(transformBuiltInLauncherItem(blItems[j], plugin.id)); allItems.push(transformBuiltInLauncherItem(blItems[j], plugin.id));
} else { } else {
var pItems = getPluginItems(plugin.id, searchQuery); var pItems = getPluginItems(plugin.id, searchQuery);
if (pItems.length > maxPerPlugin)
pItems = pItems.slice(0, maxPerPlugin);
allItems = allItems.concat(pItems); allItems = allItems.concat(pItems);
} }
} }
} else { } else if (!searchQuery) {
var emptyTriggerOrdered = getEmptyTriggerPluginsOrdered(); var emptyTriggerOrdered = getEmptyTriggerPluginsOrdered();
for (var i = 0; i < emptyTriggerOrdered.length; i++) { for (var i = 0; i < emptyTriggerOrdered.length; i++) {
var plugin = emptyTriggerOrdered[i]; var plugin = emptyTriggerOrdered[i];
@@ -463,17 +472,29 @@ Item {
} }
var dynamicDefs = buildDynamicSectionDefs(allItems); var dynamicDefs = buildDynamicSectionDefs(allItems);
if (currentVersion !== _searchVersion) {
isSearching = false;
return;
}
var scoredItems = Scorer.scoreItems(allItems, searchQuery, getFrecencyForItem); var scoredItems = Scorer.scoreItems(allItems, searchQuery, getFrecencyForItem);
var sortAlpha = !searchQuery && SettingsData.sortAppsAlphabetically; var sortAlpha = !searchQuery && SettingsData.sortAppsAlphabetically;
sections = Scorer.groupBySection(scoredItems, dynamicDefs, sortAlpha, searchQuery ? 50 : 500); var newSections = Scorer.groupBySection(scoredItems, dynamicDefs, sortAlpha, searchQuery ? 50 : 500);
for (var i = 0; i < sections.length; i++) { if (currentVersion !== _searchVersion) {
var sid = sections[i].id; isSearching = false;
return;
}
for (var i = 0; i < newSections.length; i++) {
var sid = newSections[i].id;
if (collapsedSections[sid] !== undefined) { if (collapsedSections[sid] !== undefined) {
sections[i].collapsed = collapsedSections[sid]; newSections[i].collapsed = collapsedSections[sid];
} }
} }
sections = newSections;
flatModel = Scorer.flattenSections(sections); flatModel = Scorer.flattenSections(sections);
if (!AppSearchService.isCacheValid() && !searchQuery && searchMode === "all" && !pluginFilter) { if (!AppSearchService.isCacheValid() && !searchQuery && searchMode === "all" && !pluginFilter) {