import { getMovieDetail, getSources, SourceData, Subject, Resource } from '@/lib/api'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import Image from 'next/image'; import { Separator } from '@/components/ui/separator'; import { Button } from '@/components/ui/button'; import { MoveLeft, PlayCircle, Download } from 'lucide-react'; import Link from 'next/link'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; // ... imports import { EpisodeSelector } from '@/components/admin/EpisodeSelector'; interface MovieDetailPageProps { params: Promise<{ id: string }>; searchParams: Promise<{ season?: string; episode?: string }>; } export default async function MovieDetailPage({ params, searchParams }: MovieDetailPageProps) { const { id } = await params; const { season, episode } = await searchParams; let movie: Subject | null = null; let resource: Resource | undefined = undefined; let sources: SourceData[] = []; let errorMsg = ''; // Parse params or default to 0 let currentSeason = season ? parseInt(season) : 0; let currentEpisode = episode ? parseInt(episode) : 0; // Valid flags let isSeries = false; let showSources = false; try { const detail = await getMovieDetail(id); movie = detail.subject; resource = detail.resource; isSeries = movie.subjectType === 2; if (isSeries) { // For Series, only fetch if season/episode are explicitly selected if (currentSeason > 0 && currentEpisode > 0) { const sourceData = await getSources(id, movie.detailPath, currentSeason, currentEpisode); sources = sourceData.sources || []; showSources = true; } else { // Nothing selected yet, or invalid showSources = false; } } else { // Movies: always fetch 0,0 const sourceData = await getSources(id, movie.detailPath, 0, 0); sources = sourceData.sources || []; showSources = true; } } catch (e: any) { console.error("Error fetching detail:", e); errorMsg = e.message; } if (errorMsg || !movie) { return (
Error loading movie: {errorMsg}
); } return (

{movie.title}

{/* Poster Column */}
{movie.title}
{/* Details Column */}
Details

Synopsis

{movie.description || "No description available."}

Release Date

{movie.releaseDate || 'Unknown'}

IMDb Rating

{movie.imdbRatingValue}

Genre

{movie.genre || 'Unknown'}

Country

{movie.countryName || 'Unknown'}

Streaming Sources Available video sources for playback.
{isSeries && currentSeason > 0 && ( Season {currentSeason} - Episode {currentEpisode} )}
{isSeries && resource?.seasons && ( )}
{!showSources && isSeries ? (
Please select an episode to view sources.
) : ( Quality Size Action {sources.map((source, idx) => ( {source.resolution}p {source.size || '-'} ))} {sources.length === 0 && ( No sources found. )}
)}
); }