"use client"; import { GradientSpinner } from "@/components/ui/GradientSpinner"; import { useImageColor } from "@/hooks/useImageColor"; // Hooks import { usePodcastData } from "@/features/podcast/hooks/usePodcastData"; import { usePodcastActions } from "@/features/podcast/hooks/usePodcastActions"; // Components import { PodcastHero } from "@/features/podcast/components/PodcastHero"; import { PodcastActionBar } from "@/features/podcast/components/PodcastActionBar"; import { ContinueListening } from "@/features/podcast/components/ContinueListening"; import { EpisodeList } from "@/features/podcast/components/EpisodeList"; import { PreviewEpisodes } from "@/features/podcast/components/PreviewEpisodes"; import { SimilarPodcasts } from "@/features/podcast/components/SimilarPodcasts"; export default function PodcastDetailPage() { // Data hook const { podcastId, podcast, previewData, displayData, isLoading, heroImage, similarPodcasts, sortOrder, setSortOrder, inProgressEpisodes, sortedEpisodes, } = usePodcastData(); // Extract colors from the proxied image URL const { colors } = useImageColor(heroImage); // Action hooks const { isSubscribing, showDeleteConfirm, setShowDeleteConfirm, handleSubscribe, handleRemovePodcast, handlePlayEpisode, handlePlayPauseEpisode, isEpisodePlaying, isPlaying, } = usePodcastActions(podcastId); // Loading state if (isLoading) { return (
); } if (!podcast && !previewData) { return (

Podcast not found

); } // Safety check if (!displayData) { return (
); } const isSubscribed = !!podcast; const episodeCount = podcast ? podcast.episodes.length : previewData?.episodeCount || 0; return (
handleSubscribe(previewData)} onRemove={handleRemovePodcast} onShowDeleteConfirm={setShowDeleteConfirm} /> {/* Main Content */}
{/* Fixed height gradient - not dependent on content */}
{/* Continue Listening - Only for subscribed podcasts */} {podcast && inProgressEpisodes.length > 0 && ( handlePlayEpisode(episode, podcast)} onPlayPause={(episode) => handlePlayPauseEpisode(episode, podcast) } /> )} {/* Preview Mode - Show Episode Teasers */} {!podcast && previewData && ( handleSubscribe(previewData)} /> )} {/* All Episodes - Only Show When Subscribed */} {podcast && ( handlePlayPauseEpisode(episode, podcast) } onPlay={(episode) => handlePlayEpisode(episode, podcast)} /> )} {/* Similar Podcasts */}
); }