1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 21:42:51 -05:00

fix app searching sorting with usage rankings

This commit is contained in:
bbedward
2025-07-26 16:50:57 -04:00
parent d2d8c4d74d
commit e160a41347
2 changed files with 38 additions and 12 deletions

View File

@@ -76,17 +76,17 @@ Item {
}
}
}
// Sort apps by usage ranking, then alphabetically
apps = apps.sort(function(a, b) {
var aId = a.id || (a.execString || a.exec || "");
var bId = b.id || (b.execString || b.exec || "");
var aUsage = appUsageRanking[aId] ? appUsageRanking[aId].usageCount : 0;
var bUsage = appUsageRanking[bId] ? appUsageRanking[bId].usageCount : 0;
if (aUsage !== bUsage)
return bUsage - aUsage;
// Higher usage first
return (a.name || "").localeCompare(b.name || ""); // Alphabetical fallback
});
if (searchQuery.length === 0) {
apps = apps.sort(function(a, b) {
var aId = a.id || (a.execString || a.exec || "");
var bId = b.id || (b.execString || b.exec || "");
var aUsage = appUsageRanking[aId] ? appUsageRanking[aId].usageCount : 0;
var bUsage = appUsageRanking[bId] ? appUsageRanking[bId].usageCount : 0;
if (aUsage !== bUsage)
return bUsage - aUsage;
return (a.name || "").localeCompare(b.name || "");
});
}
// Convert to model format and populate
apps.forEach((app) => {
if (app)

View File

@@ -55,7 +55,33 @@ Singleton {
scoreFn: r => {
var nameScore = r[0] ? r[0].score : 0
var commentScore = r[1] ? r[1].score : 0
return nameScore > 0 ? nameScore * 0.9 + commentScore * 0.1 : commentScore * 0.5
var appName = r.obj.entry.name || ""
var finalScore = 0
if (nameScore > 0) {
var queryLower = query.toLowerCase()
var nameLower = appName.toLowerCase()
if (nameLower === queryLower) {
finalScore = nameScore * 100
}
else if (nameLower.startsWith(queryLower)) {
finalScore = nameScore * 50
}
else if (nameLower.includes(" " + queryLower) || nameLower.includes(queryLower + " ") || nameLower.endsWith(" " + queryLower)) {
finalScore = nameScore * 25
}
else if (nameLower.includes(queryLower)) {
finalScore = nameScore * 10
}
else {
finalScore = nameScore * 2 + commentScore * 0.1
}
} else {
finalScore = commentScore * 0.1
}
return finalScore
},
limit: 50
})