From a1a4416bb6443a5b81459be8081e3352ef4afafb Mon Sep 17 00:00:00 2001 From: Honey Date: Wed, 13 May 2026 12:44:27 +0200 Subject: [PATCH] fix: restart skip grace period on isPlaying:true to suppress multi-fire buffering during seek --- src/player.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/player.js b/src/player.js index 1e712b5..2460cd8 100644 --- a/src/player.js +++ b/src/player.js @@ -98,9 +98,17 @@ window.NSPlayer = { onPlaybackStateChanged(stateJson) { try { const state = JSON.parse(stateJson); - if (state.isPlaying) { _skipping = false; clearTimeout(_skipTimer); } - // Suppress the transient isPlaying:false emitted by the native player during track transitions. - if (!state.isPlaying && _skipping) return; + if (_skipping) { + if (state.isPlaying) { + // isPlaying:true during skip/seek — restart grace period instead of clearing immediately, + // so a follow-up buffering false event is also suppressed. + clearTimeout(_skipTimer); + _skipTimer = setTimeout(() => { _skipping = false; }, 600); + } else { + // Suppress transient isPlaying:false during track transitions / seeks. + return; + } + } const prev = _nativePlaying; _nativePlaying = state.isPlaying; if (state.isPlaying !== prev) {