diff --git a/src/components/syncPlay/core/Controller.js b/src/components/syncPlay/core/Controller.js index 695ccde9f1..df0dbd177a 100644 --- a/src/components/syncPlay/core/Controller.js +++ b/src/components/syncPlay/core/Controller.js @@ -100,6 +100,18 @@ class Controller { }); } + /** + * Clears the playlist of a SyncPlay group. + * @param {Array} clearPlayingItem Whether to remove the playing item as well. + */ + clearPlaylist(clearPlayingItem = false) { + const apiClient = this.manager.getApiClient(); + apiClient.requestSyncPlayRemoveFromPlaylist({ + ClearPlaylist: true, + ClearPlayingItem: clearPlayingItem + }); + } + /** * Removes items from SyncPlay group playlist. * @param {Array} playlistItemIds The items to remove. diff --git a/src/components/syncPlay/ui/players/NoActivePlayer.js b/src/components/syncPlay/ui/players/NoActivePlayer.js index 48dfe953ba..92dced3ef4 100644 --- a/src/components/syncPlay/ui/players/NoActivePlayer.js +++ b/src/components/syncPlay/ui/players/NoActivePlayer.js @@ -45,6 +45,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer { playbackManager._localPlay = playbackManager.play; playbackManager._localSetCurrentPlaylistItem = playbackManager.setCurrentPlaylistItem; + playbackManager._localClearQueue = playbackManager.clearQueue; playbackManager._localRemoveFromPlaylist = playbackManager.removeFromPlaylist; playbackManager._localMovePlaylistItem = playbackManager.movePlaylistItem; playbackManager._localQueue = playbackManager.queue; @@ -62,6 +63,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer { playbackManager.play = this.playRequest; playbackManager.setCurrentPlaylistItem = this.setCurrentPlaylistItemRequest; + playbackManager.clearQueue = this.clearQueueRequest; playbackManager.removeFromPlaylist = this.removeFromPlaylistRequest; playbackManager.movePlaylistItem = this.movePlaylistItemRequest; playbackManager.queue = this.queueRequest; @@ -93,6 +95,7 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer { playbackManager.play = playbackManager._localPlay; playbackManager.setCurrentPlaylistItem = playbackManager._localSetCurrentPlaylistItem; + playbackManager.clearQueue = this._localClearQueue; playbackManager.removeFromPlaylist = playbackManager._localRemoveFromPlaylist; playbackManager.movePlaylistItem = playbackManager._localMovePlaylistItem; playbackManager.queue = playbackManager._localQueue; @@ -247,6 +250,14 @@ class NoActivePlayer extends SyncPlay.Players.GenericPlayer { controller.setCurrentPlaylistItem(playlistItemId); } + /** + * Overrides PlaybackManager's clearQueue method. + */ + clearQueueRequest(clearPlayingItem, player) { + const controller = syncPlayManager.getController(); + controller.clearPlaylist(clearPlayingItem); + } + /** * Overrides PlaybackManager's removeFromPlaylist method. */