'use client'; import Image from "next/image" import { PlusCircledIcon } from "@radix-ui/react-icons" import { useRouter } from 'next/navigation'; import { cn } from "@/lib/utils" import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, } from "../../components/ui/context-menu" import { Album } from "@/lib/navidrome" import { useNavidrome } from "./NavidromeContext" import Link from "next/link"; import { useAudioPlayer } from "@/app/components/AudioPlayerContext"; import { getNavidromeAPI } from "@/lib/navidrome"; interface AlbumArtworkProps extends React.HTMLAttributes { album: Album aspectRatio?: "portrait" | "square" width?: number height?: number } export function AlbumArtwork({ album, aspectRatio = "portrait", width, height, className, ...props }: AlbumArtworkProps) { const router = useRouter(); const { addAlbumToQueue } = useAudioPlayer(); const { playlists, starItem, unstarItem } = useNavidrome(); const api = getNavidromeAPI(); const handleClick = () => { router.push(`/album/${album.id}`); }; const handleAddToQueue = () => { addAlbumToQueue(album.id); }; const handleStar = () => { if (album.starred) { unstarItem(album.id, 'album'); } else { starItem(album.id, 'album'); } }; // Get cover art URL with proper fallback const coverArtUrl = album.coverArt ? api.getCoverArtUrl(album.coverArt, 300) : '/default-user.jpg'; return (
{album.name}
{album.starred ? 'Remove from Favorites' : 'Add to Favorites'} Add to Playlist New Playlist {playlists.map((playlist) => ( {playlist.name} ))} Add Album to Queue Play Next Play Later {album.starred ? '★ Starred' : '☆ Star'} Share

{album.name}

{album.artist}

) }