diff --git a/src/player.js b/src/player.js index ee06f71..0b19a69 100644 --- a/src/player.js +++ b/src/player.js @@ -130,8 +130,10 @@ window.NSPlayer = { } catch (e) {} } // Always sync shuffle/repeat settings. + // setShuffleMode is always false — we pre-shuffle the JS array ourselves and + // traverse sequentially, so ExoPlayer's internal shuffle must stay off. _nsBridge('setRepeatMode', S.repeat === false ? 'off' : S.repeat); - _nsBridge('setShuffleMode', S.shuffle); + _nsBridge('setShuffleMode', false); }, // Play/pause/buffer state changed. @@ -714,10 +716,7 @@ export function nextSong() { // Explicit index prevents desync when JS and native queue pointers diverge. _nsBridge('seekToIndex', ni, 0); _nsBridge('play'); - } else { - // Shuffle mode: native picks the shuffled-next item; onTrackChanged will confirm the index. - _nsBridge('next'); - } + // else: ni = -1 means end of queue with no repeat — let ExoPlayer stop naturally. if (S.radioMode && S.queue.length - S.qIdx < 5) fillRadioQueue(); return; }