import { cookies } from "next/headers";
import { redirect } from "next/navigation";

import { AuthSignIn, DashboardAdmin, DashboardUser } from "@/routes";

import { auth } from "@/lib/auth/auth";
import type { Session } from "@/lib/auth/auth";

export default async function Home() {
  const cookieStore = await cookies();
  const cookiePairs = cookieStore
    .getAll()
    .map((cookie) => `${cookie.name}=${cookie.value}`);
  const cookieHeader = cookiePairs.join("; ");

  const headersForAuth = new Headers();
  if (cookieHeader) {
    headersForAuth.set("cookie", cookieHeader);
  }

  const sessionResponse = await auth.api.getSession({
    headers: headersForAuth,
  });

  const session = (sessionResponse as { data?: Session | null })?.data ?? null;

  if (!session) {
    redirect(AuthSignIn());
  }

  const role = session.user.role;

  if (role === "admin" || role === "superAdmin") {
    redirect(DashboardAdmin());
  }

  redirect(DashboardUser());

  return null;
}
