+31
-3
@@ -4,6 +4,32 @@ import { jetbrainsMono } from "@/lib/fonts";
|
|||||||
import { AdminMembersTable } from "./admin-members-table";
|
import { AdminMembersTable } from "./admin-members-table";
|
||||||
import { AdminCheatFlags } from "./admin-cheat-flags";
|
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() {
|
export default async function AdminPage() {
|
||||||
const supabase = await createClient();
|
const supabase = await createClient();
|
||||||
const {
|
const {
|
||||||
@@ -35,8 +61,10 @@ export default async function AdminPage() {
|
|||||||
.limit(200),
|
.limit(200),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const pseudoById = new Map((members ?? []).map((member) => [member.id, member.pseudo]));
|
const memberRows = (members ?? []) as AdminMember[];
|
||||||
const flagsWithPseudo = (cheatFlags ?? []).map((flag) => ({
|
const flagRows = (cheatFlags ?? []) as CheatFlagRow[];
|
||||||
|
const pseudoById = new Map(memberRows.map((member) => [member.id, member.pseudo]));
|
||||||
|
const flagsWithPseudo = flagRows.map((flag) => ({
|
||||||
...flag,
|
...flag,
|
||||||
pseudo: pseudoById.get(flag.user_id) ?? "Un Citoyen",
|
pseudo: pseudoById.get(flag.user_id) ?? "Un Citoyen",
|
||||||
}));
|
}));
|
||||||
@@ -49,7 +77,7 @@ export default async function AdminPage() {
|
|||||||
</h1>
|
</h1>
|
||||||
<p className="font-serif text-sm text-marble/60 italic">Administration des Citoyens</p>
|
<p className="font-serif text-sm text-marble/60 italic">Administration des Citoyens</p>
|
||||||
</div>
|
</div>
|
||||||
<AdminMembersTable members={members ?? []} currentUserId={user.id} />
|
<AdminMembersTable members={memberRows} currentUserId={user.id} />
|
||||||
<AdminCheatFlags flags={flagsWithPseudo} />
|
<AdminCheatFlags flags={flagsWithPseudo} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user