diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index e6cdaa7..f82fcc5 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -4,6 +4,32 @@ import { jetbrainsMono } from "@/lib/fonts"; import { AdminMembersTable } from "./admin-members-table"; import { AdminCheatFlags } from "./admin-cheat-flags"; +type AdminMember = { + id: string; + pseudo: string; + role: string; + pseudo_locked: boolean; + avatar_url: string | null; + email: string; +}; + +type CheatFlagRow = { + id: number; + user_id: string; + game: "icarus" | "melon"; + score: number; + severity: "warning" | "high"; + trigger_code: string; + reason: string; + details: { + duration_ms?: number | null; + actions?: number | null; + merges?: number | null; + previous_best?: number | null; + } | null; + created_at: string; +}; + export default async function AdminPage() { const supabase = await createClient(); const { @@ -35,8 +61,10 @@ export default async function AdminPage() { .limit(200), ]); - const pseudoById = new Map((members ?? []).map((member) => [member.id, member.pseudo])); - const flagsWithPseudo = (cheatFlags ?? []).map((flag) => ({ + const memberRows = (members ?? []) as AdminMember[]; + const flagRows = (cheatFlags ?? []) as CheatFlagRow[]; + const pseudoById = new Map(memberRows.map((member) => [member.id, member.pseudo])); + const flagsWithPseudo = flagRows.map((flag) => ({ ...flag, pseudo: pseudoById.get(flag.user_id) ?? "Un Citoyen", })); @@ -49,7 +77,7 @@ export default async function AdminPage() {

Administration des Citoyens

- + );