import { useEffect, useState, useMemo } from "react"; import { useParams, useNavigate } from "react-router-dom"; import api from "../lib/api"; import { Play, ArrowLeft } from "lucide-react"; import AlbumArt from "../components/AlbumArt"; export default function ShowDetail() { const { id } = useParams(); const nav = useNavigate(); const [show, setShow] = useState(null); const [episodes, setEpisodes] = useState([]); const [season, setSeason] = useState(1); useEffect(() => { (async () => { const [s, e] = await Promise.all([api.get(`/shows/${id}`), api.get(`/shows/${id}/episodes`)]); setShow(s.data); setEpisodes(e.data); const firstS = e.data[0]?.season_number || 1; setSeason(firstS); })(); }, [id]); const seasons = useMemo(() => [...new Set(episodes.map((e) => e.season_number))].sort((a, b) => a - b), [episodes]); const inSeason = useMemo(() => episodes.filter((e) => e.season_number === season), [episodes, season]); if (!show) return
Loading…
; return (
Series

{show.title}

{show.year}·{show.rating}· {show.season_count} seasons · {show.episode_count} episodes

{show.description}

Seasons {seasons.map((n) => ( ))}
{inSeason.map((ep) => ( ))}
); }