"use client"; import Image from "next/image"; import { useEffect, useState } from "react"; import { createPortal } from "react-dom"; import { Icon } from "@iconify/react"; import LikeButton from "./like-button"; interface Props { miiId: number; miiName: string; likes: number; } export default function DeleteMiiButton({ miiId, miiName, likes }: Props) { const [isOpen, setIsOpen] = useState(false); const [isVisible, setIsVisible] = useState(false); const [error, setError] = useState(undefined); const submit = async () => { const response = await fetch(`/api/mii/${miiId}/delete`, { method: "DELETE" }); if (!response.ok) { const { error } = await response.json(); setError(error); return; } close(); window.location.reload(); // I would use router.refresh() here but the API data fetching breaks }; const close = () => { setIsVisible(false); setTimeout(() => { setIsOpen(false); }, 300); }; useEffect(() => { if (isOpen) { // slight delay to trigger animation setTimeout(() => setIsVisible(true), 10); } }, [isOpen]); return ( <> {isOpen && createPortal(

Delete Mii

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

mii image

{miiName}

{error && Error: {error}}
, document.body )} ); }