"use client"; import { useEffect, useState } from "react"; type Wanted = { id: string; artistName: string; album: string; state: string; currentQualityClass: number | null; lastSearchedAt: string | null; }; export function WantedClient() { const [rows, setRows] = useState([]); const [artist, setArtist] = useState(""); const [album, setAlbum] = useState(""); const [error, setError] = useState(""); async function refresh() { const res = await fetch("/api/wanted"); setRows((await res.json()).wanted); } useEffect(() => { refresh(); }, []); async function add(e: React.FormEvent) { e.preventDefault(); setError(""); if (!artist.trim() || !album.trim()) return; const res = await fetch("/api/wanted", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ artist, album }), }); if (!res.ok) { setError((await res.json()).error ?? "failed to add"); return; } setArtist(""); setAlbum(""); refresh(); } async function searchNow(w: Wanted) { await fetch(`/api/releases/${w.id}/search`, { method: "POST" }); refresh(); } return (
setArtist(e.target.value)} /> setAlbum(e.target.value)} /> {error ? {error} : null}
); }