fix(jellyfin): use season episode endpoint

This commit is contained in:
edde746
2026-06-14 18:34:12 +02:00
parent 5e2bd4efa8
commit 01a5d11ef5
9 changed files with 203 additions and 12 deletions
+15 -2
View File
@@ -2769,6 +2769,11 @@ class _MediaDetailScreenState extends State<MediaDetailScreen>
return null;
}
String? _seriesIdForSeason(MediaItem season) {
if (_metadata.isShow) return (_fullMetadata ?? _metadata).id;
return season.grandparentId ?? season.parentId ?? _metadata.grandparentId ?? _metadata.parentId;
}
Future<LibraryPage<MediaItem>> _fetchFlattenedEpisodePage(
MediaServerClient client,
ServerId serverId, {
@@ -2777,7 +2782,11 @@ class _MediaDetailScreenState extends State<MediaDetailScreen>
}) async {
final season = _flattenedSeasonForDirectEpisodePaging;
if (season != null) {
final page = await client.fetchChildrenPage(season.id, start: start, size: size);
final seriesId = _seriesIdForSeason(season);
final seasonPagingClient = client is SeasonEpisodePagingClient ? client as SeasonEpisodePagingClient : null;
final page = seriesId != null && seasonPagingClient != null
? await seasonPagingClient.fetchSeasonEpisodesPage(seriesId, season.id, start: start, size: size)
: await client.fetchChildrenPage(season.id, start: start, size: size);
return LibraryPage<MediaItem>(
items: _enrichDirectSeasonEpisodes(page.items, season: season, serverId: serverId),
totalCount: page.totalCount,
@@ -2991,7 +3000,11 @@ class _MediaDetailScreenState extends State<MediaDetailScreen>
} else {
final client = getServerBoundMediaClient(context);
if (client == null) return;
firstEpisode = await fetchFirstEpisodeForSeason(client, firstSeason.id);
firstEpisode = await fetchFirstEpisodeForSeason(
client,
firstSeason.id,
seriesId: _seriesIdForSeason(firstSeason),
);
}
if (firstEpisode == null) {