From 32e7ea60ec1cbcfb8e7e2f9c22da7f75eaef9ed2 Mon Sep 17 00:00:00 2001 From: Damian Kacperski <7dami77@gmail.com> Date: Thu, 1 Feb 2024 19:38:38 +0100 Subject: [PATCH] Fix repeat and shuffle in SessionPlayer --- src/components/playback/playbackmanager.js | 4 ++++ src/plugins/sessionPlayer/plugin.js | 8 ++++---- src/utils/dashboard.js | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index cf8cf41c29..4896d5e167 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2056,6 +2056,7 @@ class PlaybackManager { state.PlayState.IsPaused = player.paused(); state.PlayState.RepeatMode = self.getRepeatMode(player); state.PlayState.ShuffleMode = self.getQueueShuffleMode(player); + state.PlayState.OrderMode = self.getQueueShuffleMode(player); state.PlayState.MaxStreamingBitrate = self.getMaxStreamingBitrate(player); state.PlayState.PositionTicks = getCurrentTicks(player); @@ -4034,6 +4035,9 @@ class PlaybackManager { case 'SetShuffleQueue': this.setQueueShuffleMode(cmd.Arguments.ShuffleMode, player); break; + case 'SetOrderMode': + this.setQueueShuffleMode(cmd.Arguments.OrderMode, player); + break; case 'VolumeUp': this.volumeUp(player); break; diff --git a/src/plugins/sessionPlayer/plugin.js b/src/plugins/sessionPlayer/plugin.js index 3f9fc1720c..ed13a11fb1 100644 --- a/src/plugins/sessionPlayer/plugin.js +++ b/src/plugins/sessionPlayer/plugin.js @@ -450,17 +450,17 @@ class SessionPlayer { } getRepeatMode() { - // not supported? + return this.lastPlayerData?.PlayState?.RepeatMode; } setQueueShuffleMode(mode) { - sendCommandByName(this, 'SetShuffleQueue', { - ShuffleMode: mode + sendCommandByName(this, 'SetOrderMode', { + OrderMode: mode }); } getQueueShuffleMode() { - // not supported? + return this.lastPlayerData?.PlayState?.OrderMode; } displayContent(options) { diff --git a/src/utils/dashboard.js b/src/utils/dashboard.js index 4cca230cc2..aa1db8ee79 100644 --- a/src/utils/dashboard.js +++ b/src/utils/dashboard.js @@ -175,7 +175,7 @@ export function alert(options) { export function capabilities(appHost) { return Object.assign({ PlayableMediaTypes: ['Audio', 'Video'], - SupportedCommands: ['MoveUp', 'MoveDown', 'MoveLeft', 'MoveRight', 'PageUp', 'PageDown', 'PreviousLetter', 'NextLetter', 'ToggleOsd', 'ToggleContextMenu', 'Select', 'Back', 'SendKey', 'SendString', 'GoHome', 'GoToSettings', 'VolumeUp', 'VolumeDown', 'Mute', 'Unmute', 'ToggleMute', 'SetVolume', 'SetAudioStreamIndex', 'SetSubtitleStreamIndex', 'DisplayContent', 'GoToSearch', 'DisplayMessage', 'SetRepeatMode', 'SetShuffleQueue', 'ChannelUp', 'ChannelDown', 'PlayMediaSource', 'PlayTrailers'], + SupportedCommands: ['MoveUp', 'MoveDown', 'MoveLeft', 'MoveRight', 'PageUp', 'PageDown', 'PreviousLetter', 'NextLetter', 'ToggleOsd', 'ToggleContextMenu', 'Select', 'Back', 'SendKey', 'SendString', 'GoHome', 'GoToSettings', 'VolumeUp', 'VolumeDown', 'Mute', 'Unmute', 'ToggleMute', 'SetVolume', 'SetAudioStreamIndex', 'SetSubtitleStreamIndex', 'DisplayContent', 'GoToSearch', 'DisplayMessage', 'SetRepeatMode', 'SetOrderMode', 'ChannelUp', 'ChannelDown', 'PlayMediaSource', 'PlayTrailers'], SupportsPersistentIdentifier: window.appMode === 'cordova' || window.appMode === 'android', SupportsMediaControl: true }, appHost.getPushTokenInfo());