import { useNavigate, useParams } from "react-router"; import ReasonSelector from "../../components/reason-selector"; import { useEffect, useState } from "react"; import { type ReportReason } from "@tomodachi-share/shared"; import SubmitButton from "../../components/submit-button"; export default function ReportMiiPage() { const { id } = useParams(); const navigate = useNavigate(); const [reason, setReason] = useState(); const [notes, setNotes] = useState(); const [error, setError] = useState(undefined); const [mii, setMii] = useState(null); const [loading, setLoading] = useState(true); const API_URL = import.meta.env.VITE_API_URL; useEffect(() => { fetch(`${API_URL}/api/mii/${id}/info`) .then((res) => { if (!res.ok) throw new Error("Failed to fetch Mii"); return res.json(); }) .then((data) => { setMii(data); setLoading(false); }) .catch((err) => { console.error(err); setLoading(false); navigate("/404"); }); }, [id]); if (loading || !mii) { return
Loading...
; } const handleSubmit = async () => { const response = await fetch(`${import.meta.env.VITE_API_URL}/api/report`, { method: "POST", body: JSON.stringify({ id: mii.id, type: "mii", reason: reason?.toLowerCase(), notes }), credentials: "include", }); const { error } = await response.json(); if (!response.ok) { setError(error); return; } navigate("/"); }; return (

Report a Mii

If you encounter a rule-breaking Mii, please report it here


mii image

{mii.name}