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) => (
))}
);
}