Race behoben: Playlist-Wiederherstellung nur nach abgeschlossenem Sync-Lauf

This commit is contained in:
Hermes (Server)
2026-08-27 14:11:36 +02:00
parent b7c8be6f0f
commit 8126a16520
+10 -5
View File
@@ -218,12 +218,17 @@ class _HomeShellState extends State<HomeShell> with WidgetsBindingObserver {
final sync = context.read<SyncService>();
final playlists = context.read<PlaylistService>();
await sync.automatisch();
// Nur auf einem Gerät ohne eigene Playlisten: nach dem ersten Abgleich
// (der Songs erst cloudIds zuweist) holt das die gesicherten Listen
// zurück. Vor dem Sync liefe jede songByCloudId-Suche ins Leere und
// legte leere Playlisten an, die der countPlaylists()-Riegel dann für
// immer blockierte.
// Nur auf einem Gerät ohne eigene Playlisten, und nur nach einem
// tatsächlich abgeschlossenen Sync-Lauf: läuft parallel schon ein
// echter Sync (z. B. weil ein Berechtigungsdialog während des
// Erststarts einen App-Resume auslöst und diese Methode ein zweites
// Mal anstößt), kehrt automatisch() oben wegen des _laeuft-Guards
// sofort zurück — dann liefe jede songByCloudId-Suche noch ins Leere,
// legte leere Playlisten an, und der countPlaylists()-Riegel würde
// jeden weiteren Versuch für immer blockieren.
if (!sync.laeuft) {
unawaited(playlists.stelleWiederHer());
}
if (!mounted) return;
final bericht = sync.bericht;
if (bericht == null) return;