diff --git a/lib/main.dart b/lib/main.dart index c70dbb4..d66b618 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -218,12 +218,17 @@ class _HomeShellState extends State with WidgetsBindingObserver { final sync = context.read(); final playlists = context.read(); 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. - unawaited(playlists.stelleWiederHer()); + // 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;