v2.55.1 — Code-Review-Fixes: Singleton, Race-Conditions, Fallback-Timer, Log-Security
CRITICAL (C1): RealtimeSyncService jetzt Singleton (Factory-Pattern) - Verhindert doppelte SSE-Verbindungen durch home_screen + settings - UI-Notifier (istVerbundenNotifier) app-weit konsistent HIGH (H1): _reconnecteOderFallback + starteWennAktiviert setzen cloud_interval vor starteAutoSyncTimer() — sonst bleibt Timer bei Fallback auf 0 (kein Sync) HIGH (H2): Race-Condition in _verbinde() nach await request.close() — _pausiert-Flag re-check; bei true → clean exit mit _laeuft=false HIGH (H3): fortsetzen() re-checkt _pausiert nach starteWennAktiviert() — verhindert Leak bei schnellem App-Umschalten MEDIUM (M1): _syncModusSetzen stoppt SSE bei Wechsel auf manual/interval (vorher lief die Verbindung weiter) MEDIUM (M2): Event-Logging loggt nur noch Event-Typ, nicht rohe Daten (Privacy: Song-IDs/Titel/Künstler nicht im Log) LOW (L1): _verbinde() setzt _laeuft=false bei Token-Fehler (kein Deadlock)
This commit is contained in:
@@ -109,19 +109,21 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
await p.setString('sync_modus', modus);
|
||||
|
||||
// Realtime-Service entsprechend starten/stoppen
|
||||
final rs = RealtimeSyncService();
|
||||
switch (modus) {
|
||||
case 'realtime':
|
||||
// SSE sofort starten
|
||||
final rs = RealtimeSyncService();
|
||||
await rs.starteWennAktiviert();
|
||||
break;
|
||||
case 'manual':
|
||||
// Kein Auto-Sync — Timer stoppen
|
||||
// Kein Auto-Sync — SSE stoppen, Timer deaktivieren
|
||||
rs.stoppe();
|
||||
await p.setInt('cloud_interval', 0); // alten Timer deaktivieren
|
||||
await SyncService.starteAutoSyncTimer();
|
||||
break;
|
||||
case 'interval':
|
||||
// Intervall-Timer mit cloud_interval_stunden starten
|
||||
// Intervall-Timer — SSE stoppen, Timer mit cloud_interval_stunden starten
|
||||
rs.stoppe();
|
||||
await p.setInt('cloud_interval', _cloudIntervallStunden);
|
||||
await SyncService.starteAutoSyncTimer();
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user