Files
dmgnr a31c8fbb54
Build and Push Image / build-backend (push) Successful in 52s
Build and Push Image / build-frontend (push) Successful in 2m8s
Build and Push Image / push (push) Successful in 1m24s
chore: oxc
2026-06-10 01:44:11 +07:00

64 lines
1.8 KiB
TypeScript
Executable File

import { eq } from "drizzle-orm";
import { notFound } from "next/navigation";
import Avatar from "@/components/avatar";
import {
Card,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { getArtifactConfig } from "@/lib/api";
import { db } from "@/lib/db";
import { characters, submissions } from "@/lib/db/schema";
import { CopyButton, EnkaBrowser } from "./client";
export default async function AdminSubmissionView({
params,
}: {
params: Promise<{ id: string }>;
}) {
const { id } = await params;
const [sub] = await db
.select()
.from(submissions)
.where(eq(submissions.id, id))
.limit(1);
if (!sub) notFound();
const [char] = await db
.select()
.from(characters)
.where(eq(characters.name, sub?.char || ""))
.limit(1);
const { enka } = await getArtifactConfig();
if (!sub) notFound();
return (
<div className="h-full p-2">
<div className="flex h-full w-full flex-col gap-2">
<div className="flex w-full justify-between gap-2">
<Card className="w-full rounded-md pb-1">
<CardHeader>
<CardTitle className="font-bold">
{sub.queue}. {sub.name}
</CardTitle>
<CardDescription className="text-white">
{sub.comment}
</CardDescription>
</CardHeader>
<CardFooter className="h-full items-end">
<div className="flex items-center">
<span className="text-gray-500">{sub.uid}</span>
<CopyButton text={sub.uid} />
</div>
</CardFooter>
</Card>
<Avatar char={char} />
</div>
<div className="h-full overflow-hidden rounded-md border">
{enka && <EnkaBrowser uid={sub.uid} sub={sub.id} />}
</div>
</div>
</div>
);
}