fix(web,flutter): PlayerBar test scoping + system-playlists revalidate
Two bundled fixes: ### Web: PlayerBar test failures PlayerBar renders both compact (md:hidden) and desktop (hidden md:flex) blocks; jsdom doesn't apply CSS media queries so both DOM trees are present in tests. screen.getByRole/getByText found duplicates → 14 test failures. Added data-testid="player-bar-compact" + "player-bar-desktop"; tests scope queries via within(getByTestId(...)). Compact is the focus of #358, so most tests scope there. The "Up next" subgroup explicitly scopes to desktop since that copy was dropped from compact. ### Flutter: system playlists not loading cacheFirst was too conservative — when drift had user-created playlists from sync but no system playlists (For-You / Discover), fetchAndPopulate never fired (drift wasn't empty). Result: home tile row showed user playlists but never the system ones. Added cacheFirst alwaysRefresh option = stale-while-revalidate. playlistsListProvider opts in: yields cache immediately, then kicks off REST refresh in background. Drift watch() picks up the new rows and re-emits. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,6 +61,11 @@ final playlistsListProvider =
|
||||
return PlaylistsList(owned: owned, public: pub);
|
||||
},
|
||||
isOnline: () async => (await ref.read(connectivityProvider.future)),
|
||||
// Aggregate list — server may add system playlists (For-You /
|
||||
// Discover) that the per-user delta sync doesn't always emit.
|
||||
// Stale-while-revalidate ensures the home tile row reflects the
|
||||
// current server state on every screen visit.
|
||||
alwaysRefresh: true,
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user