updates persistence

This commit is contained in:
Zacharias-Brohn
2026-03-18 11:37:14 +01:00
parent 159e10cc0f
commit bc67da35e4
+49
View File
@@ -4,11 +4,13 @@ pragma ComponentBehavior: Bound
import QtQuick
import Quickshell
import Quickshell.Io
import qs.Paths
Singleton {
id: root
property int availableUpdates: 0
property bool loaded
property double now: Date.now()
property var updates: ({})
@@ -30,12 +32,23 @@ Singleton {
return Qt.formatDateTime(new Date(timestamp), "dd hh:mm");
}
onUpdatesChanged: {
if (!root.loaded)
return;
saveTimer.restart();
availableUpdates = Object.keys(updates).length;
}
Timer {
interval: 1
repeat: true
running: true
onTriggered: {
if (!root.loaded)
return;
updatesProc.running = true;
interval = 5000;
}
@@ -71,4 +84,40 @@ Singleton {
}
}
}
Timer {
id: saveTimer
interval: 1000
onTriggered: storage.setText(JSON.stringify(root.updates))
}
FileView {
id: storage
path: `${Paths.state}/updates.json`
onLoadFailed: err => {
if (err === FileViewError.FileNotFound) {
root.updates = ({});
root.loaded = true;
setText("{}");
return;
}
root.updates = ({});
root.loaded = true;
}
onLoaded: {
try {
const data = JSON.parse(text());
root.updates = data && typeof data === "object" && !Array.isArray(data) ? data : {};
} catch (e) {
root.updates = ({});
}
root.loaded = true;
}
}
}