"use client" import { useSession } from "next-auth/react" import { useEffect, useState } from "react" import { motion } from "framer-motion" import { useRouter } from "next/navigation" import { Heart, Music, ArrowLeft, Play, Plus, ExternalLink, Sparkles } from "lucide-react" import Link from "next/link" import Image from "next/image" interface Track { id: string name: string artists: Array<{ name: string }> album: { name: string images: Array<{ url: string }> } external_urls: { spotify: string } } interface Playlist { id: string name: string description: string external_urls: { spotify: string } } export default function MixPage() { const { data: session, status } = useSession() const router = useRouter() const [recommendations, setRecommendations] = useState([]) const [isGenerating, setIsGenerating] = useState(false) const [playlist, setPlaylist] = useState(null) const [isCreatingPlaylist, setIsCreatingPlaylist] = useState(false) useEffect(() => { if (status === "unauthenticated") { router.push("/auth/signin") return } }, [session, status, router]) const generateMix = async () => { setIsGenerating(true) try { const response = await fetch("/api/spotify/recommendations", { method: "POST" }) const data = await response.json() setRecommendations(data.tracks || []) } catch (error) { console.error("Error generating mix:", error) } finally { setIsGenerating(false) } } const createPlaylist = async () => { if (recommendations.length === 0) return setIsCreatingPlaylist(true) try { const response = await fetch("/api/spotify/create-playlist", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name: "Harmony Mix 💕", description: "A beautiful mix created for you both by Harmony", trackIds: recommendations.map(track => track.id) }) }) const data = await response.json() setPlaylist(data.playlist) } catch (error) { console.error("Error creating playlist:", error) } finally { setIsCreatingPlaylist(false) } } if (status === "loading") { return (
) } if (!session) { return null } return (
{/* Header */}

Mix Generator

Create the perfect playlist for both of you

{/* Generate Button */} {isGenerating ? ( <> Creating Your Mix... ) : ( <> Make us a Mix 💽 )} {/* Recommendations */} {recommendations.length > 0 && (

Your Perfect Mix ({recommendations.length} songs)

{!playlist && ( {isCreatingPlaylist ? ( <> Creating... ) : ( <> Create Playlist )} )}
{playlist && (

Playlist Created!

Your mix is ready to enjoy together

Open in Spotify
)}
{recommendations.map((track, index) => (
{/* Album Cover */}
{track.album.images[0] ? ( {track.album.name} ) : (
)}
{/* Track Info */}

{track.name}

{track.artists.map(artist => artist.name).join(", ")}

{track.album.name}

{/* Spotify Link */}
))}
)} {recommendations.length === 0 && !isGenerating && (

Ready to create your mix?

Click the button above to generate a personalized playlist based on both of your musical tastes.

)}
) }