fix: season list re-reads via provider dependency; ignore pid files
seasonsProvider now watches seasonRefreshProvider instead of relying on a HomeScreen ref.listen, making the refresh ordering-independent. Removes the redundant listener from HomeScreen. Appends *.pid to .gitignore. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -48,3 +48,4 @@ app.*.map.json
|
|||||||
lib/l10n/gen/
|
lib/l10n/gen/
|
||||||
.superpowers/
|
.superpowers/
|
||||||
CLAUDE.md
|
CLAUDE.md
|
||||||
|
*.pid
|
||||||
|
|||||||
@@ -41,9 +41,13 @@ final seasonFlowProvider = NotifierProvider<SeasonFlowNotifier, SeasonFlow?>(
|
|||||||
final contentRepositoryProvider =
|
final contentRepositoryProvider =
|
||||||
Provider<ContentRepository>((ref) => ContentRepository());
|
Provider<ContentRepository>((ref) => ContentRepository());
|
||||||
|
|
||||||
final seasonsProvider = FutureProvider<List<SeasonPack>>(
|
final seasonsProvider = FutureProvider<List<SeasonPack>>((ref) {
|
||||||
(ref) => ref.read(contentRepositoryProvider).availableSeasons(),
|
// Watching (not awaiting) the one-shot sync makes this provider re-run
|
||||||
);
|
// once when the sync completes, picking up freshly cached packs. Local
|
||||||
|
// content loads immediately; the network never blocks this future.
|
||||||
|
ref.watch(seasonRefreshProvider);
|
||||||
|
return ref.read(contentRepositoryProvider).availableSeasons();
|
||||||
|
});
|
||||||
|
|
||||||
/// One background content sync per app session. Home listens and refreshes
|
/// One background content sync per app session. Home listens and refreshes
|
||||||
/// the season list when new packs arrived.
|
/// the season list when new packs arrived.
|
||||||
|
|||||||
@@ -21,11 +21,6 @@ class HomeScreen extends ConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
ref.listen(seasonRefreshProvider, (_, next) {
|
|
||||||
if (next is AsyncData<bool> && next.value == true) {
|
|
||||||
ref.invalidate(seasonsProvider);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
final l10n = AppLocalizations.of(context)!;
|
final l10n = AppLocalizations.of(context)!;
|
||||||
final streak = ref.watch(streakProvider);
|
final streak = ref.watch(streakProvider);
|
||||||
final best = ref.watch(endlessBestProvider);
|
final best = ref.watch(endlessBestProvider);
|
||||||
|
|||||||
Reference in New Issue
Block a user