import { redirect } from "next/navigation";

import { getActiveContext } from "@/lib/appwrite/active-context";
import { getLogoUrl } from "@/lib/appwrite/storage";
import { createSessionClient } from "@/lib/appwrite/server";
import type { ThemePrefs } from "@/lib/appwrite/theme-prefs-actions";
import { DashboardShell } from "./dashboard-shell";

export default async function DashboardLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  const ctx = await getActiveContext();
  if (!ctx) redirect("/onboarding");

  let themePrefs: ThemePrefs = {};
  try {
    const { account } = await createSessionClient();
    themePrefs = await account.getPrefs<ThemePrefs>();
  } catch {
    // use defaults if prefs unavailable
  }

  const company = {
    id: ctx.tenantId,
    name: ctx.settings?.companyName ?? "Çalışma alanı",
    logoUrl: getLogoUrl(ctx.settings?.logo) ?? null,
  };
  const user = {
    id: ctx.user.id,
    name: ctx.user.name || ctx.user.email,
    email: ctx.user.email,
  };

  return (
    <DashboardShell user={user} company={company} initialPrefs={themePrefs}>
      {children}
    </DashboardShell>
  );
}
