fix(web player + stats modal): no auto-resume after user pause; stable stats modal
Player: opening the PWA no longer auto-plays when the user had paused. Pausing via the media notification while backgrounded routes through togglePlay, which now sets S._userPaused; _onForeground only auto-resumes an INVOLUNTARY background stop (_wasPlayingBeforeHide && !_userPaused). playCurrent clears the flag on a new track. Involuntary-stop/freeze recovery on foreground is preserved. Stats modal: no more small→big flash when switching period/tab — the body keeps a stable min-height and retains its current content until the new data arrives (only the first open shows 'Lade…'); a per-request token drops out-of-order responses. SW cache -> ns-v71. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
3129333f9a
commit
1d98b273e7
5 files changed
+21
-9
No files matched your search
+5
-3
@@ -202,10 +202,12 @@ window.addEventListener('load', () => {
|
||||
// Skip when native is active: Media3 owns the system media session.
|
||||
if(navigator.mediaSession && !S._trackChanging && !window.NSBridge)
|
||||
navigator.mediaSession.playbackState = S.audio.paused ? 'paused' : 'playing';
|
||||
// Only auto-resume if audio was actually playing when the page hid (OS-killed buffer).
|
||||
// If the user explicitly paused, _wasPlayingBeforeHide is false — don't restart.
|
||||
// Only auto-resume after an INVOLUNTARY background stop (OS-killed buffer / frozen tab).
|
||||
// Never restart if the user deliberately paused — including via the media notification while
|
||||
// backgrounded (that routes through togglePlay → S._userPaused=true), which used to wrongly
|
||||
// auto-resume on foreground because _wasPlayingBeforeHide was still true from hide-time.
|
||||
if(!S.audio.paused) return;
|
||||
if(s && S.audio.src && _wasPlayingBeforeHide) S.audio.play().catch(() => { S._trackChanging = false; });
|
||||
if(s && S.audio.src && _wasPlayingBeforeHide && !S._userPaused) S.audio.play().catch(() => { S._trackChanging = false; });
|
||||
}
|
||||
|
||||
document.addEventListener('visibilitychange', () => {
|
||||
|
||||
Reference in new issue
Block a user