/* eslint-disable @typescript-eslint/no-unused-vars */ 'use client'; import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"; import { useState, useEffect } from 'react'; import { Separator } from "@/components/ui/separator"; import { Tabs, TabsContent } from "@/components/ui/tabs"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { ArtistIcon } from '@/app/components/artist-icon'; import { useNavidrome } from '@/app/components/NavidromeContext'; import { Artist } from '@/lib/navidrome'; import Loading from '@/app/components/loading'; import { Search } from 'lucide-react'; import { useRouter } from 'next/navigation'; import Image from 'next/image'; export default function ArtistPage() { const { artists, isLoading, api, starItem, unstarItem } = useNavidrome(); const [filteredArtists, setFilteredArtists] = useState([]); const [searchQuery, setSearchQuery] = useState(''); const [sortBy, setSortBy] = useState<'name' | 'albumCount'>('name'); const router = useRouter(); const toggleFavorite = async (artistId: string, isStarred: boolean) => { if (isStarred) { await unstarItem(artistId, 'artist'); } else { await starItem(artistId, 'artist'); } }; const handleViewArtist = (artist: Artist) => { router.push(`/artist/${artist.id}`); }; useEffect(() => { if (artists.length > 0) { let filtered = [...artists]; // Filter by search query if (searchQuery) { filtered = filtered.filter(artist => artist.name.toLowerCase().includes(searchQuery.toLowerCase()) ); } // Sort artists filtered.sort((a, b) => { if (sortBy === 'name') { return a.name.localeCompare(b.name); } else { return (b.albumCount || 0) - (a.albumCount || 0); } }); setFilteredArtists(filtered); } }, [artists, searchQuery, sortBy]); if (isLoading) { return ; } return (

Artists

{filteredArtists.length} of {artists.length} artists

{/* Search and Filter Controls */}
setSearchQuery(e.target.value)} className="pl-10" />
{filteredArtists.map((artist) => ( ))}
); }