v2.53.1 — LOW-1: Willkommen-zurück-Dialog nur bei >24h Offline (24h-Check)

This commit is contained in:
Dustin
2026-08-05 11:26:00 +02:00
parent f14b658566
commit 83bb86a1fa
3 changed files with 50 additions and 0 deletions
+20
View File
@@ -35,11 +35,17 @@ class SyncBericht {
/// Menschlich lesbare Änderungszeilen („+ Neuer Song: …“, „− Gelöscht: …“).
final List<String> details;
/// Letzter Sync-ZEITPUNKT VOR diesem Lauf (Snapshot vor listSongs,
/// MED-1) — Basis für den 24h-Check des „Willkommen zurück!“-Dialogs
/// (LOW-1). null = noch nie gesynct (Erst-Sync) → Dialog zeigen.
final DateTime? letzterSyncVorher;
const SyncBericht({
required this.neueSongs,
required this.geloeschteSongs,
required this.favoritenGeaendert,
this.details = const [],
this.letzterSyncVorher,
});
bool get hatAenderungen =>
@@ -54,6 +60,16 @@ class SyncBericht {
];
return teile.join(' · ');
}
/// LOW-1: „Willkommen zurück!“-Dialog nur nach längerer Pause zeigen —
/// letzter Sync mehr als 24h zurück (oder noch nie gesynct). [jetzt]
/// injizierbar für Tests.
bool nachLangerPause({DateTime? jetzt}) {
final vorher = letzterSyncVorher;
if (vorher == null) return true;
final j = jetzt ?? DateTime.now();
return j.difference(vorher) > const Duration(hours: 24);
}
}
/// Zentraler Cloud-Sync (Sprint D, v2.52.2).
@@ -487,6 +503,10 @@ class SyncService {
geloeschteSongs: geloeschteSongs,
favoritenGeaendert: favoritenGeaendert,
details: [...neueDetails, ...loeschDetails, ...favoritenDetails],
// LOW-1: 24h-Check des „Willkommen zurück!“-Dialogs gegen den
// letzterSync-Stand VOR diesem Sync (MED-1-Snapshot) — nicht gegen
// den frisch persistierten, sonst wäre die Pause immer 0.
letzterSyncVorher: letzterSync,
);
if (bericht.hatAenderungen) {
onBericht?.call(bericht);