import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar"; import { FormAdminSidebar } from "./sidebar-client"; import { Metadata } from "next"; import { getServerSession } from "next-auth"; import { authOptions } from "@/lib/auth/auth-options"; import { getSessionDiscordId } from "@/lib/auth/auth"; import { getDiscordMemberProfile } from "@/lib/discord/discord"; import { db } from "@/db"; import { submissions } from "@/db/schema"; import { count, eq } from "drizzle-orm"; import { notFound } from "next/navigation"; import { isFormAcceptingSubmissions } from "@/lib/form/form-availability"; export const metadata: Metadata = { title: "Admin Form", } export default async function AdminFormLayout( props: { children: React.ReactNode; params: Promise<{ id: string }>; } ) { const params = await props.params; const [session, form, [{ responseCount }]] = await Promise.all([ getServerSession(authOptions), db.query.forms.findFirst({ where: (record, { eq }) => eq(record.id, params.id), }), db .select({ responseCount: count() }) .from(submissions) .where(eq(submissions.formId, params.id)), ]); if (!form) { notFound(); } let profile = null; const discordId = getSessionDiscordId(session); if (discordId) { profile = await getDiscordMemberProfile(discordId); } return (
{props.children}
); }