@@ -129,7 +129,7 @@ private void handleFrame(@NotNull Spirc.MessageType type, @NotNull Spirc.Frame s
129129 break ;
130130 case kMessageTypeReplace :
131131 if (frame != null && frame .endpoint == Remote3Frame .Endpoint .UpdateContext ) {
132- updatedTracks (frame , true );
132+ updatedTracks (frame );
133133 stateUpdated ();
134134 }
135135 break ;
@@ -263,7 +263,7 @@ private void handleSeek(int pos) {
263263 stateUpdated ();
264264 }
265265
266- private void updatedTracks (@ NotNull Remote3Frame frame , boolean fromFrame ) {
266+ private void updatedTracks (@ NotNull Remote3Frame frame ) {
267267 if (frame .context .uri != null ) {
268268 state .update (frame );
269269
@@ -274,16 +274,13 @@ private void updatedTracks(@NotNull Remote3Frame frame, boolean fromFrame) {
274274 tracksProvider = new PlaylistProvider (session , state .state , conf );
275275 }
276276
277- Optional .ofNullable (frame .options .playerOptionsOverride .repeatingContext ).ifPresent (state ::setRepeat );
278- Optional .ofNullable (frame .options .playerOptionsOverride .shufflingContext ).ifPresent (state ::setShuffle );
279-
280- if (fromFrame ) {
281- if (state .getShuffle () && conf .defaultUnshuffleBehaviour ())
282- shuffleTracks (true );
283- } else {
284- if (state .getShuffle ())
285- shuffleTracks (true );
277+ if (frame .options != null && frame .options .playerOptionsOverride != null ) {
278+ Optional .ofNullable (frame .options .playerOptionsOverride .repeatingContext ).ifPresent (state ::setRepeat );
279+ Optional .ofNullable (frame .options .playerOptionsOverride .shufflingContext ).ifPresent (state ::setShuffle );
286280 }
281+
282+ if (state .getShuffle ())
283+ shuffleTracks (frame .options == null || frame .options .skipTo .trackUid == null );
287284 }
288285
289286 @ Override
@@ -359,7 +356,7 @@ private void handleLoad(@NotNull Remote3Frame frame) {
359356
360357 LOGGER .debug (String .format ("Loading context, uri: %s" , frame .context .uri ));
361358
362- updatedTracks (frame , frame . context . pages != null );
359+ updatedTracks (frame );
363360
364361 if (state .getTrackCount () > 0 ) {
365362 state .setPositionMs (frame .options .seekTo == -1 ? 0 : frame .options .seekTo );
0 commit comments