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 (
{movie.description || "No description available."}
{movie.releaseDate || 'Unknown'}
{movie.genre || 'Unknown'}
{movie.countryName || 'Unknown'}