"use client"; import { usePoll } from "@/lib/use-poll"; import { JellyfinCard } from "@/components/jellyfin-card"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { StatusBadge } from "@/components/status-badge"; interface QueueItem { title: string; status: string; size?: string; timeleft?: string; progress?: number; } interface SonarrQueueItem { title: string; status: string; sizeleft?: string; timeleft?: string; } interface RadarrQueueItem { title: string; status: string; sizeleft?: string; timeleft?: string; } interface SabQueue { slots: QueueItem[]; speed: string; paused: boolean; } export default function MediaPage() { const { data: sonarr } = usePoll( "/api/sonarr/queue", 30000 ); const { data: radarr } = usePoll( "/api/radarr/queue", 30000 ); const { data: sab } = usePoll("/api/sabnzbd/queue", 30000); return (

Media

{/* Sonarr Queue */} Sonarr Queue {!sonarr ? (

Loading...

) : sonarr.length === 0 ? (

Queue empty

) : (
{sonarr.map((item, i) => (

{item.title}

{item.timeleft && ( {item.timeleft} )}
))}
)}
{/* Radarr Queue */} Radarr Queue {!radarr ? (

Loading...

) : radarr.length === 0 ? (

Queue empty

) : (
{radarr.map((item, i) => (

{item.title}

{item.timeleft && ( {item.timeleft} )}
))}
)}
{/* SABnzbd Queue */} SABnzbd Queue {sab && ( )} {!sab ? (

Loading...

) : sab.slots.length === 0 ? (

Queue empty

) : (
{sab.slots.map((item, i) => (

{item.title}

{item.timeleft && ( {item.timeleft} )}
{item.progress != null && (
)}
))}
)}
); }