From 7fe7639c5683dac6441e21cbc8a24598e3a3ccbd Mon Sep 17 00:00:00 2001 From: Et0h Date: Wed, 19 Oct 2016 00:23:08 +0100 Subject: [PATCH] Don't prepare to advance playlist if playlist can't be advanced --- syncplay/client.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index 9f32127..68a68f9 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -214,8 +214,11 @@ class SyncplayClient(object): self._protocol.sendState(self.getPlayerPosition(), self.getPlayerPaused(), seeked, None, True) def prepareToAdvancePlaylist(self): - self.ui.showDebugMessage("Preparing to advance playlist...") - self._protocol.sendState(0, True, True, None, True) + if self.playlist.canSwitchToNextPlaylistIndex(): + self.ui.showDebugMessage("Preparing to advance playlist...") + self._protocol.sendState(0, True, True, None, True) + else: + self.ui.showDebugMessage("Not preparing to advance playlist because the next file cannot be switched to") def _toggleReady(self, pauseChange, paused): if not self.userlist.currentUser.canControl(): @@ -1428,6 +1431,22 @@ class SyncplayPlaylist(): self._ui.showMessage(getMessage("playlist-selection-changed-notification").format(username)) self.switchToNewPlaylistIndex(index) + def canSwitchToNextPlaylistIndex(self): + if self._thereIsNextPlaylistIndex() and self._client.sharedPlaylistIsEnabled(): + try: + index = self._nextPlaylistIndex() + if index is None: + return False + filename = self._playlist[index] + if utils.isURL(filename): + return True if self._client.isURITrusted(filename) else False + else: + path = self._client.fileSwitch.findFilepath(filename, highPriority=True) + return True if path else False + except: + return False + return False + @needsSharedPlaylistsEnabled def switchToNewPlaylistIndex(self, index, resetPosition=False): self._lastPlaylistIndexChange = time.time()