From 8bf3a64cd72cda69ac6da685ddeb117b62e3c3e1 Mon Sep 17 00:00:00 2001 From: Jason Beetham Date: Mon, 2 Oct 2023 22:42:05 -0600 Subject: [PATCH] Make the series and season Play button play the next episode --- src/components/playback/playbackmanager.js | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 05117fd08d9..53b70ea445e 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1848,6 +1848,56 @@ class PlaybackManager { SortBy: options.shuffle ? 'Random' : 'SortName', MediaTypes: 'Audio' }); + } else if (firstItem.Type === 'Series' || firstItem.Type === 'Season') { + const apiClient = ServerConnections.getApiClient(firstItem.ServerId); + + promise = apiClient.getEpisodes(firstItem.SeriesId || firstItem.Id, { + IsVirtualUnaired: false, + IsMissing: false, + UserId: apiClient.getCurrentUserId(), + Fields: 'Chapters' + }).then(function (episodesResult) { + const originalResults = episodesResult.Items; + const isSeries = firstItem.Type === 'Series'; + + let foundItem = false; + + episodesResult.Items = episodesResult.Items.filter(function (e) { + if (foundItem) { + return true; + } + + if (!e.UserData.Played && (isSeries || e.SeasonId === firstItem.Id)) { + foundItem = true; + return true; + } + + return false; + }); + + if (episodesResult.Items.length === 0) { + if (isSeries) { + episodesResult.Items = originalResults; + } else { + episodesResult.Items = originalResults.filter(function (e) { + if (foundItem) { + return true; + } + + if (e.SeasonId === firstItem.Id) { + foundItem = true; + return true; + } + + return false; + }); + } + } + + episodesResult.TotalRecordCount = episodesResult.Items.length; + + return episodesResult; + }); } else if (firstItem.IsFolder && firstItem.CollectionType === 'homevideos') { promise = getItemsForPlayback(serverId, mergePlaybackQueries({ ParentId: firstItem.Id,