feat: MetaDetails selects appropriate season:

- For non-watched series it choses 1st season
- For watched series it uses the LibraryItem video to choose the same season

Signed-off-by: Lachezar Lechev <lachezar@ambire.com>
This commit is contained in:
Lachezar Lechev 2025-02-28 09:06:04 +02:00
parent 24d11b4cf9
commit 28dbdaa20d
No known key found for this signature in database
GPG key ID: FDC9325CE311E8A4

View file

@ -20,6 +20,7 @@ const VideosList = ({ className, metaItem, libraryItem, season, seasonOnSelect,
: :
[]; [];
}, [metaItem]); }, [metaItem]);
// Orders season from 1 to X and 0 (special season) at the end
const seasons = React.useMemo(() => { const seasons = React.useMemo(() => {
return videos return videos
.map(({ season }) => season) .map(({ season }) => season)
@ -36,17 +37,27 @@ const VideosList = ({ className, metaItem, libraryItem, season, seasonOnSelect,
return season; return season;
} }
if (libraryItem?.state.video_id && videos) {
const video = videos?.find((video) => video.id === libraryItem.state.video_id);
if (video && video.season && seasons.includes(video.season)) {
return video.season;
}
}
const nonSpecialSeasons = seasons.filter((season) => season !== 0); const nonSpecialSeasons = seasons.filter((season) => season !== 0);
if (nonSpecialSeasons.length > 0) { if (nonSpecialSeasons.length > 0) {
return nonSpecialSeasons[nonSpecialSeasons.length - 1]; // default to 1st season
return nonSpecialSeasons[0];
} }
if (seasons.length > 0) { if (seasons.length > 0) {
return seasons[seasons.length - 1]; // default to 1st season
return seasons[0];
} }
return null; return null;
}, [seasons, season]); }, [seasons, season, videos, libraryItem]);
const videosForSeason = React.useMemo(() => { const videosForSeason = React.useMemo(() => {
return videos return videos
.filter((video) => { .filter((video) => {