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

Merge pull request #5415 from nvllsvm/fix_show_shuffle

Fix shuffling for shows
This commit is contained in:
Andrew Rabert 2024-04-24 13:16:30 -04:00 committed by GitHub
commit d1f6af32a7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

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