updates persistence
This commit is contained in:
@@ -4,11 +4,13 @@ pragma ComponentBehavior: Bound
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
|
import qs.Paths
|
||||||
|
|
||||||
Singleton {
|
Singleton {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property int availableUpdates: 0
|
property int availableUpdates: 0
|
||||||
|
property bool loaded
|
||||||
property double now: Date.now()
|
property double now: Date.now()
|
||||||
property var updates: ({})
|
property var updates: ({})
|
||||||
|
|
||||||
@@ -30,12 +32,23 @@ Singleton {
|
|||||||
return Qt.formatDateTime(new Date(timestamp), "dd hh:mm");
|
return Qt.formatDateTime(new Date(timestamp), "dd hh:mm");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onUpdatesChanged: {
|
||||||
|
if (!root.loaded)
|
||||||
|
return;
|
||||||
|
|
||||||
|
saveTimer.restart();
|
||||||
|
availableUpdates = Object.keys(updates).length;
|
||||||
|
}
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
interval: 1
|
interval: 1
|
||||||
repeat: true
|
repeat: true
|
||||||
running: true
|
running: true
|
||||||
|
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
|
if (!root.loaded)
|
||||||
|
return;
|
||||||
|
|
||||||
updatesProc.running = true;
|
updatesProc.running = true;
|
||||||
interval = 5000;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user