Compare commits

..

2 commits

Author SHA1 Message Date
e81f054e3a fix: admin page issues 2026-04-18 01:09:53 +01:00
ce1c7a667a feat: primative admin page 2026-04-18 00:48:24 +01:00
3 changed files with 23 additions and 3 deletions

View file

@ -9,6 +9,7 @@ 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;
@ -79,7 +80,7 @@ export default function MiiList({ parentPage, userId }: Props) {
</div>
)}
<Link to={`/mii/${mii.id}`} className="overflow-hidden rounded-xl bg-zinc-300 shrink-0">
{parentPage !== "admin" ? <Link to={`/mii/${mii.id}`} className="overflow-hidden rounded-xl bg-zinc-300 shrink-0">
<img
src={`${import.meta.env.VITE_API_URL}/mii/${mii.id}/image?type=mii`}
width={240}
@ -87,7 +88,13 @@ export default function MiiList({ parentPage, userId }: Props) {
alt="mii image"
className="w-full h-auto aspect-3/2 object-contain"
/>
</Link>
</Link> : <Carousel
images={[
`${import.meta.env.VITE_API_URL}/mii/${mii.id}/image?type=mii`,
...(mii.platform === "THREE_DS" ? [`${import.meta.env.VITE_API_URL}/mii/${mii.id}/image?type=qr-code`] : [`${import.meta.env.VITE_API_URL}/mii/${mii.id}/image?type=features`]),
...Array.from({ length: mii.imageCount }, (_, index) => `${import.meta.env.VITE_API_URL}/mii/${mii.id}/image?type=image${index}`),
]}
/>}
<div className="p-4 flex flex-col gap-1 h-full">
<div className="flex justify-between">
@ -134,7 +141,7 @@ export default function MiiList({ parentPage, userId }: Props) {
<div className="flex gap-1 text-3xl justify-center">
<button
onClick={async () => {
await fetch(`/api/admin/accept-mii?id=${mii.id}`, { method: "PATCH" });
await fetch(`${import.meta.env.VITE_API_URL}/api/admin/accept-mii?id=${mii.id}`, { method: "PATCH", credentials: "include" });
}}
className="cursor-pointer text-zinc-400 hover:text-green-500 transition-colors p-1 bg-white rounded-md shadow-sm border border-zinc-200 hover:border-green-500"
title="Accept Mii"

View file

@ -20,6 +20,7 @@ import ProfileLayout from "./pages/profile/layout.tsx";
import ProfileLikesPage from "./pages/profile/likes.tsx";
import ReportMiiPage from "./pages/report/mii.tsx";
import ReportUserPage from "./pages/report/user.tsx";
import AdminPage from "./pages/admin.tsx";
createRoot(document.getElementById("root")!).render(
<StrictMode>
@ -43,6 +44,7 @@ createRoot(document.getElementById("root")!).render(
<Route path="/out" element={<LinkOutPage />} />
<Route path="/privacy" element={<PrivacyPage />} />
<Route path="/terms-of-service" element={<TermsOfServicePage />} />
<Route path="/admin" element={<AdminPage />} />
<Route path="*" element={<NotFoundPage />} />
</Routes>
</Layout>

View file

@ -0,0 +1,11 @@
import { useStore } from "@nanostores/react";
import MiiList from "../components/mii/list";
import { session } from "../session";
import { Navigate } from "react-router";
export default function AdminPage() {
const $session = useStore(session);
if ($session === undefined) return <div className="p-6 text-center">Loading...</div>;
if ($session === null || ($session && Number($session?.user?.id) !== 1)) return <Navigate to="/404" replace />;
return <MiiList parentPage="admin" />;
}