fix(audio): don't reset prefetch state for the chapter being consumed

The stale-prefetch reset effect compared prefetchedFor against nextChapter
only, so when landing on chapter N+1 (prefetchedFor=N+1, nextChapter=N+2)
it would destroy the pre-fetched URL before startPlayback() could use it,
breaking every auto-next transition after the first.

Fix: also allow prefetchedFor === chapter (current page) so the URL
survives long enough to be consumed, then only wipe truly foreign values.
This commit is contained in:
Admin
2026-03-04 17:43:38 +05:00
parent 9f3e895fa8
commit 80da1bb3e2

View File

@@ -78,11 +78,16 @@
}); });
// Reset next-chapter prefetch state when this chapter changes (new page). // Reset next-chapter prefetch state when this chapter changes (new page).
// We only reset if the prefetch is for a *different* chapter than nextChapter // Only reset if the prefetch belongs to neither the current chapter
// (i.e. stale data from a prior page). // (about to be consumed by startPlayback) nor the next chapter (still valid).
// Any other value means stale data from a previous page.
$effect(() => { $effect(() => {
const prefetchedFor = audioStore.nextChapterPrefetched; const prefetchedFor = audioStore.nextChapterPrefetched;
if (prefetchedFor !== null && prefetchedFor !== (nextChapter ?? null)) { if (
prefetchedFor !== null &&
prefetchedFor !== chapter &&
prefetchedFor !== (nextChapter ?? null)
) {
audioStore.resetNextPrefetch(); audioStore.resetNextPrefetch();
} }
}); });