import { Suspense, useEffect, useState } from "react"; import FilterMenu from "../mii/list/filter-menu"; import SortSelect from "../mii/list/sort-select"; import MiiGrid from "../mii/list/mii-grid"; import Pagination from "../pagination"; import { type Mii } from "@tomodachi-share/backend"; import Skeleton from "../mii/list/skeleton"; interface ApiResponse { totalCount: number; filteredCount: number; miis: Mii[]; lastPage: number; } export default function IndexPage() { const searchParams = new URLSearchParams(window.location.search); const [data, setData] = useState(); const [loading, setLoading] = useState(true); useEffect(() => { fetch(`${import.meta.env.PUBLIC_API_URL}/api/mii/list?${searchParams.toString()}`) .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); }); }, []); return ( <>

{searchParams.get("tags") ? `Miis tagged with '${searchParams.get("tags")}' - TomodachiShare` : "TomodachiShare - index mii list"}

}> {!loading && (
{data.totalCount == data.filteredCount ? ( <> {data.totalCount} {data.totalCount === 1 ? "Mii" : "Miis"} ) : ( <> {data.filteredCount} of {data.totalCount} Miis )}
)}
); }