import { useEffect, useState } from "react"; import { Link, useSearchParams } from "react-router"; import Skeleton from "./skeleton"; import FilterMenu from "./filter-menu"; import SortSelect from "./sort-select"; import Pagination from "../../pagination"; import DeleteMiiButton from "../delete-mii-button"; import { Icon } from "@iconify/react"; import LikeButton from "../../like-button"; import { useStore } from "@nanostores/react"; import { session } from "../../../session"; import Carousel from "../../carousel"; interface ApiResponse { totalCount: number; miis: any[]; lastPage: number; } interface Props { userId?: number; parentPage?: "likes" | "admin"; } export default function MiiList({ parentPage, userId }: Props) { const [searchParams] = useSearchParams(); const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const $session = useStore(session); useEffect(() => { const params = new URLSearchParams(searchParams.toString()); if (userId) params.append("userId", userId.toString()); if (parentPage) params.append("parentPage", parentPage); fetch(`${import.meta.env.VITE_API_URL}/api/mii/list?${params.toString()}`, { credentials: "include" }) .then((res) => { if (!res.ok) throw new Error("Failed to fetch Miis"); return res.json(); }) .then((data) => { setData(data); setLoading(false); }) .catch((err) => { console.error(err); setLoading(false); }); }, [searchParams, userId, parentPage]); return ( <> {loading ? ( ) : data ? (
{data.totalCount} {data.totalCount === 1 ? "Mii" : "Miis"}
{data.miis.map((mii) => (
{mii.in_queue && (
In Queue
)} {parentPage !== "admin" ? ( mii image ) : ( `${import.meta.env.VITE_API_URL}/mii/${mii.id}/image?type=image${index}`), ]} /> )}
{mii.name}
{mii.platform === "SWITCH" ? ( ) : ( )}
{mii.tags.map((tag: string) => ( {tag} ))}
{!userId && ( @{mii.user?.name} )} {userId && Number($session?.user?.id) == userId && (
)} {/* Admin Controls */} {parentPage === "admin" && (
{new Date(mii.createdAt).toLocaleString("en-GB", { timeZone: "UTC" })}
)}
))}
) : (

No Miis found, has the server died?

)} ); }