import { redirect } from "next/navigation";
import { createClient } from "@/lib/supabase/server";
import { validateEnv } from "@/lib/env";
import { AppShell } from "./app-shell";

validateEnv();

export default async function AppLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  const supabase = await createClient();
  const {
    data: { user },
  } = await supabase.auth.getUser();

  if (!user) {
    redirect("/login");
  }

  const userName =
    user.user_metadata?.full_name || user.email?.split("@")[0] || "User";
  const userAvatar = user.user_metadata?.avatar_url || null;
  const { data: profile } = await supabase
    .from("profiles")
    .select("username, full_name, email, avatar_url")
    .eq("id", user.id)
    .maybeSingle();

  return (
    <AppShell
      userName={profile?.full_name || userName}
      userAvatar={profile?.avatar_url || userAvatar}
      userUsername={profile?.username || null}
      userEmail={profile?.email || user.email || ""}
    >
      {children}
    </AppShell>
  );
}
