From 6492247743e83e4a981285e77123f0b01804d1b6 Mon Sep 17 00:00:00 2001 From: team3 Date: Sat, 10 Oct 2026 14:30:37 +0200 Subject: [PATCH] update --- desktop@marha.de/sync.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/desktop@marha.de/sync.js b/desktop@marha.de/sync.js index 9c95792..53a21b7 100644 --- a/desktop@marha.de/sync.js +++ b/desktop@marha.de/sync.js @@ -92,7 +92,7 @@ export class Sync { reply('Dateiabgleich ist aus ("files": false in sync.json)'); return; } - this._filesCycle() + this._filesCycle(true) .then(r => reply(r ? `hoch ${r.uploaded}, gelöscht gemeldet ${r.removed}, runter ${r.written}, lokal gelöscht ${r.deleted}` : 'läuft gerade schon')) .catch(e => reply(`Fehler: ${e.message}`)); } @@ -272,10 +272,14 @@ export class Sync { } // Eigener Lauf mit eigenem Stand: die Antwort enthält nur Dateien, der Takt der Einträge bleibt unberührt. - // Gibt zurück, was übertragen wurde, oder null, wenn gerade ein Lauf aktiv ist. - async _filesCycle() { + // Gibt zurück, was übertragen wurde, oder null, wenn gerade ein Lauf aktiv ist oder die Verbindung getaktet ist. + // Getaktet (Handy-Hotspot, in GNOME als getaktete Verbindung erkannt oder markiert): Sitzungen sind groß, + // sie warten auf echtes WLAN. Einträge laufen weiter. force: Aufruf von Hand (make sync-files) läuft trotzdem. + async _filesCycle(force = false) { if (this._filesBusy || !this._filesRoot) return null; + if (!force && this._metered()) + return null; this._filesBusy = true; const result = {uploaded: 0, removed: 0, written: 0, deleted: 0}; try { @@ -372,6 +376,16 @@ export class Sync { })); } + // Meldet den Wechsel einmal im Journal, damit klar ist, warum nichts hochgeht + _metered() { + const metered = Gio.NetworkMonitor.get_default().network_metered; + if (metered !== this._wasMetered) { + this._wasMetered = metered; + console.log(`desktop-app sync: Verbindung ${metered ? 'getaktet, Dateiabgleich pausiert' : 'nicht getaktet, Dateiabgleich läuft'}`); + } + return metered; + } + _fail(message) { if (this._stopped) return;