launcher: app usage recording moved to ShellState singleton

This commit is contained in:
Lemmy
2026-02-10 20:16:31 -05:00
parent f1f3c410cd
commit edac72cd19
2 changed files with 42 additions and 38 deletions
+40
View File
@@ -90,6 +90,46 @@ Singleton {
}
}
// Launcher app usage tracking (separate file, survives panel destruction)
FileView {
id: launcherUsageFile
path: Settings.cacheDir ? Settings.cacheDir + "launcher_app_usage.json" : ""
printErrors: false
watchChanges: false
onLoadFailed: function (error) {
if (error.toString().includes("No such file") || error === 2) {
writeAdapter();
}
}
JsonAdapter {
id: launcherUsageAdapter
property var counts: ({})
}
}
Timer {
id: launcherUsageSaveTimer
interval: 500
onTriggered: launcherUsageFile.writeAdapter()
}
function getLauncherUsageCount(key) {
const m = launcherUsageAdapter.counts;
if (!m)
return 0;
const v = m[key];
return typeof v === 'number' && isFinite(v) ? v : 0;
}
function recordLauncherUsage(key) {
let counts = Object.assign({}, launcherUsageAdapter.counts || {});
counts[key] = getLauncherUsageCount(key) + 1;
launcherUsageAdapter.counts = counts;
launcherUsageSaveTimer.restart();
}
// Debounced save timer
Timer {
id: saveTimer