import AirDateBadge from '@app/components/AirDateBadge'; import CachedImage from '@app/components/Common/CachedImage'; import LoadingSpinner from '@app/components/Common/LoadingSpinner'; import defineMessages from '@app/utils/defineMessages'; import type { SeasonWithEpisodes } from '@server/models/Tv'; import { useIntl } from 'react-intl'; import useSWR from 'swr'; const messages = defineMessages('components.TvDetails.Season', { somethingwentwrong: 'Something went wrong while retrieving season data.', noepisodes: 'Episode list unavailable.', }); type SeasonProps = { seasonNumber: number; tvId: number; }; const Season = ({ seasonNumber, tvId }: SeasonProps) => { const intl = useIntl(); const { data, error } = useSWR( `/api/v1/tv/${tvId}/season/${seasonNumber}` ); if (!data && !error) { return ; } if (!data) { return
{intl.formatMessage(messages.somethingwentwrong)}
; } return (
{data.episodes.length === 0 ? (

{intl.formatMessage(messages.noepisodes)}

) : ( data.episodes .slice() .reverse() .map((episode) => { return (

{episode.episodeNumber} - {episode.name}

{episode.airDate && ( )}
{episode.overview &&

{episode.overview}

}
{episode.stillPath && (
)}
); }) )}
); }; export default Season;