This commit is contained in:
team3
2026-10-10 14:30:37 +02:00
parent c096332b43
commit 6492247743

View File

@@ -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;