import { auth } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
import { redirect } from "@/i18n/navigation";
import { setRequestLocale } from "next-intl/server";
import DashboardShell from "@/components/layout/DashboardShell";
import { canUseDevMode } from "@/lib/session-utils";

export default async function DashboardLayout({
  children,
  params,
}: {
  children: React.ReactNode;
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  setRequestLocale(locale);

  const session = await auth();
  if (!session) {
    redirect({ href: "/login", locale });
    return null;
  }

  const showDevMode = canUseDevMode(session);

  let devMode = false;
  if (showDevMode && session.user.id) {
    const dbUser = await prisma.user.findUnique({
      where: { id: session.user.id },
      select: { devMode: true },
    });
    devMode = dbUser?.devMode ?? false;
  }

  return (
    <DashboardShell session={session} devMode={devMode} canUseDevMode={showDevMode}>
      {children}
    </DashboardShell>
  );
}
