import { useEffect, useState } from "react"; import { Modal } from "./Modal"; import { replaceImage, search, type SearchResponse } from "api/api"; import SearchResults from "../SearchResults"; import { AsyncButton } from "../AsyncButton"; interface Props { type: string; id: number; musicbrainzId?: string; open: boolean; setOpen: Function; } export default function ImageReplaceModal({ musicbrainzId, type, id, open, setOpen, }: Props) { const [query, setQuery] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [suggestedImgLoading, setSuggestedImgLoading] = useState(true); const doImageReplace = (url: string) => { setLoading(true); setError(""); const formData = new FormData(); formData.set(`${type.toLowerCase()}_id`, id.toString()); formData.set("image_url", url); replaceImage(formData) .then((r) => { if (r.status >= 200 && r.status < 300) { window.location.reload(); } else { r.json().then((r) => setError(r.error)); setLoading(false); } }) .catch((err) => setError(err)); }; const closeModal = () => { setOpen(false); setQuery(""); setError(""); }; return (

Replace Image

setQuery(e.target.value)} /> {query != "" ? (
doImageReplace(query)} > Submit
) : ( "" )} {type === "Album" && musicbrainzId ? ( <>

Suggested Image (Click to Apply)

) : ( "" )}

{error}

); }