import { Suspense } from "react";
import { redirect } from "next/navigation";
import { DashboardShell } from "@/components/layout/dashboard-shell";
import { isCsmsApiConfigured } from "@/lib/auth/server-config";
import { getServerSession } from "@/lib/auth/server-session";
import { SessionMonitor } from "@/features/auth/session-lifecycle";

export const dynamic = "force-dynamic";

export default async function Layout({ children }: { children: React.ReactNode }) {
  const session = isCsmsApiConfigured() ? await getServerSession() : null;
  if (isCsmsApiConfigured() && !session) redirect("/signin");
  if (session?.passwordSetupRequired) redirect("/set-password");
  return (
    <DashboardShell session={session}>
      {session && <SessionMonitor session={session} />}
      <Suspense
        fallback={<p className="p-8 text-muted-foreground">Loading...</p>}
      >
        {children}
      </Suspense>
    </DashboardShell>
  );
}
