import { eq } from "drizzle-orm"; import { BadgeDollarSign, Download, ExternalLink } from "lucide-react"; import Image from "next/image"; import { notFound } from "next/navigation"; import { Button } from "@/components/ui/button"; import { Card, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Dialog, DialogClose, DialogContent, DialogFooter, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { db } from "@/lib/db"; import { endgameDiscord, endgameSubmissions, endgameTypes, } from "@/lib/db/schema"; import { CallButton, CopyButton, DebugSlipUpload, NotesPanel } from "./client"; export default async function AdminSubmissionView({ params, }: { params: Promise<{ id: string }>; }) { const { id } = await params; const [sub] = await db .select() .from(endgameSubmissions) .where(eq(endgameSubmissions.id, id)) .limit(1); if (!sub) notFound(); const [user] = await db .select() .from(endgameDiscord) .where(eq(endgameDiscord.uid, sub.user)) .limit(1); const types = await db.select().from(endgameTypes); const typesMap = Object.fromEntries(types.map((v) => [v.id, v.display])); return (