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 sync = context.read<SyncService>();
|
||||||
final playlists = context.read<PlaylistService>();
|
final playlists = context.read<PlaylistService>();
|
||||||
await sync.automatisch();
|
await sync.automatisch();
|
||||||
// Nur auf einem Gerät ohne eigene Playlisten: nach dem ersten Abgleich
|
// Nur auf einem Gerät ohne eigene Playlisten, und nur nach einem
|
||||||
// (der Songs erst cloudIds zuweist) holt das die gesicherten Listen
|
// tatsächlich abgeschlossenen Sync-Lauf: läuft parallel schon ein
|
||||||
// zurück. Vor dem Sync liefe jede songByCloudId-Suche ins Leere und
|
// echter Sync (z. B. weil ein Berechtigungsdialog während des
|
||||||
// legte leere Playlisten an, die der countPlaylists()-Riegel dann für
|
// Erststarts einen App-Resume auslöst und diese Methode ein zweites
|
||||||
// immer blockierte.
|
// Mal anstößt), kehrt automatisch() oben wegen des _laeuft-Guards
|
||||||
unawaited(playlists.stelleWiederHer());
|
// 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;
|
if (!mounted) return;
|
||||||
final bericht = sync.bericht;
|
final bericht = sync.bericht;
|
||||||
if (bericht == null) return;
|
if (bericht == null) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user