1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Include season id in request when retrieving episodes

This also fixes shuffling an individual season (broken since at least 10.8.13, probably earlier)
This commit is contained in:
Andrew Rabert 2024-04-24 13:09:33 -04:00
parent 27984fe083
commit f71cc8026a

View file

@ -1868,16 +1868,17 @@ class PlaybackManager {
}, queryOptions)); }, queryOptions));
} else if (firstItem.Type === 'Series' || firstItem.Type === 'Season') { } else if (firstItem.Type === 'Series' || firstItem.Type === 'Season') {
const apiClient = ServerConnections.getApiClient(firstItem.ServerId); const apiClient = ServerConnections.getApiClient(firstItem.ServerId);
const isSeason = firstItem.Type === 'Season';
promise = apiClient.getEpisodes(firstItem.SeriesId || firstItem.Id, { promise = apiClient.getEpisodes(firstItem.SeriesId || firstItem.Id, {
IsVirtualUnaired: false, IsVirtualUnaired: false,
IsMissing: false, IsMissing: false,
SeasonId: isSeason ? firstItem.Id : undefined,
SortBy: options.shuffle ? 'Random' : undefined, SortBy: options.shuffle ? 'Random' : undefined,
UserId: apiClient.getCurrentUserId(), UserId: apiClient.getCurrentUserId(),
Fields: ['Chapters', 'Trickplay'] Fields: ['Chapters', 'Trickplay']
}).then(function (episodesResult) { }).then(function (episodesResult) {
const originalResults = episodesResult.Items; const originalResults = episodesResult.Items;
const isSeries = firstItem.Type === 'Series';
let foundItem = false; let foundItem = false;
@ -1887,7 +1888,7 @@ class PlaybackManager {
return true; return true;
} }
if (!e.UserData.Played && (isSeries || e.SeasonId === firstItem.Id)) { if (!e.UserData.Played) {
foundItem = true; foundItem = true;
return true; return true;
} }
@ -1897,22 +1898,7 @@ class PlaybackManager {
} }
if (episodesResult.Items.length === 0) { if (episodesResult.Items.length === 0) {
if (isSeries) { episodesResult.Items = originalResults;
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; episodesResult.TotalRecordCount = episodesResult.Items.length;