From bc67da35e4a4e6cde0375b1ca37d6e722ba25f2a Mon Sep 17 00:00:00 2001 From: Zacharias-Brohn Date: Wed, 18 Mar 2026 11:37:14 +0100 Subject: [PATCH] updates persistence --- Helpers/Updates.qml | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/Helpers/Updates.qml b/Helpers/Updates.qml index fc4b517..7ad83b9 100644 --- a/Helpers/Updates.qml +++ b/Helpers/Updates.qml @@ -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; + } + } }