"use client"; import { useState } from "react"; import { RefreshCw, Music2 } from "lucide-react"; import { cn } from "@/utils/cn"; import { GradientSpinner } from "@/components/ui/GradientSpinner"; import { useAudio } from "@/lib/audio-context"; import { useDiscoverData } from "@/features/discover/hooks/useDiscoverData"; import { useDiscoverActions } from "@/features/discover/hooks/useDiscoverActions"; import { usePreviewPlayer } from "@/features/discover/hooks/usePreviewPlayer"; import { DiscoverHero } from "@/features/discover/components/DiscoverHero"; import { DiscoverActionBar } from "@/features/discover/components/DiscoverActionBar"; import { DiscoverSettings } from "@/features/discover/components/DiscoverSettings"; import { TrackList } from "@/features/discover/components/TrackList"; import { UnavailableAlbums } from "@/features/discover/components/UnavailableAlbums"; import { HowItWorks } from "@/features/discover/components/HowItWorks"; export default function DiscoverWeeklyPage() { const { currentTrack, isPlaying } = useAudio(); const [showSettings, setShowSettings] = useState(false); // Custom hooks - single source of truth for batch status from useDiscoverData const { playlist, config, setConfig, loading, reloadData, batchStatus, refreshBatchStatus, setPendingGeneration, updateTrackLiked, isGenerating } = useDiscoverData(); const { handleGenerate, handleLike, handlePlayPlaylist, handlePlayTrack, handleTogglePlay, } = useDiscoverActions(playlist, reloadData, isGenerating, refreshBatchStatus, setPendingGeneration, updateTrackLiked); const { currentPreview, handleTogglePreview } = usePreviewPlayer(); // Check if we're playing from this playlist const isPlaylistPlaying = playlist?.tracks.some( (t) => t.id === currentTrack?.id ); if (loading) { return (
Generate your first playlist based on your listening history!