Race behoben: Playlist-Wiederherstellung nur nach abgeschlossenem Sync-Lauf
This commit is contained in:
+11
-6
@@ -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.
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user