diff --git a/src/player.js b/src/player.js index 2460cd8..c5324d8 100644 --- a/src/player.js +++ b/src/player.js @@ -283,6 +283,7 @@ export function playCurrent() { if (HAS_BRIDGE) { // Update DOM immediately for snappy feedback; onTrackChanged will confirm. S._trackChanging = true; + _resetProgressUI(); updatePlayerUI(s, true); onNpSongChange(s.id); renderQueue(); @@ -471,15 +472,27 @@ function _setSkipping() { _skipTimer = setTimeout(() => { _skipping = false; }, 2000); } +function _resetProgressUI() { + _nativePos = 0; + document.getElementById('progress-fill').style.width = '0%'; + document.getElementById('time-cur').textContent = formatDur(0); + if (S.npOpen) { + const fill = document.getElementById('np-fill'); + const cur = document.getElementById('np-cur'); + if (fill) fill.style.width = '0%'; + if (cur) cur.textContent = formatDur(0); + } +} + export function prevSong() { _clearPreload(); if (HAS_BRIDGE) { _setSkipping(); - if (_lastPositionMs > 3000) { _nsBridge('prev'); return; } + if (_lastPositionMs > 3000) { _resetProgressUI(); _nsBridge('prev'); return; } if (S.qIdx > 0) { S.qIdx--; const s = S.queue[S.qIdx]; - if (s) { updatePlayerUI(s, true); onNpSongChange(s.id); renderQueue(); } + if (s) { _resetProgressUI(); updatePlayerUI(s, true); onNpSongChange(s.id); renderQueue(); } } _nsBridge('prev'); return; @@ -496,7 +509,7 @@ export function nextSong() { if (ni >= 0 && ni < S.queue.length) { S.qIdx = ni; const s = S.queue[S.qIdx]; - if (s) { updatePlayerUI(s, true); onNpSongChange(s.id); renderQueue(); } + if (s) { _resetProgressUI(); updatePlayerUI(s, true); onNpSongChange(s.id); renderQueue(); } } _nsBridge('next'); if (S.radioMode && S.queue.length - S.qIdx < 5) fillRadioQueue();