import { useEffect, useState } from "react"; import { createPortal } from "react-dom"; import { Icon } from "@iconify/react"; import LikeButton from "../like-button"; import SubmitButton from "../submit-button"; import { useNavigate } from "react-router"; interface Props { miiId: number; miiName: string; likes: number; inMiiPage?: boolean; } export default function DeleteMiiButton({ miiId, miiName, likes, inMiiPage }: Props) { const navigate = useNavigate(); const [isOpen, setIsOpen] = useState(false); const [isVisible, setIsVisible] = useState(false); const [error, setError] = useState(undefined); const [inputMiiName, setInputMiiName] = useState(""); const handleSubmit = async () => { const response = await fetch(`${import.meta.env.VITE_API_URL}/api/mii/${miiId}/delete`, { method: "POST", credentials: "include" }); if (!response.ok) { const { error } = await response.json(); setError(error); return; } close(); navigate(0); }; const close = () => { setIsVisible(false); setTimeout(() => { setIsOpen(false); }, 300); }; useEffect(() => { if (isOpen) { // slight delay to trigger animation setTimeout(() => setIsVisible(true), 10); } }, [isOpen]); return ( <> {inMiiPage ? ( ) : ( )} {isOpen && createPortal(

Delete Mii

Are you sure? This will delete your Mii permanently. This action cannot be undone.

mii image

{miiName}

Type the Mii's name below to delete:

setInputMiiName(e.target.value)} autoCorrect="off" autoComplete="off" autoCapitalize="off" spellCheck={false} /> {error && Error: {error}}
, document.body, )} ); }