import NavbarMain from "@/components/navbar-main";
import ClientCompanyContextProvider from "@/context/ClientCompanyProvider";
import TanstackProvider from "@/context/TanstackProvider";
import { getPublicData } from "@/utils/fetch";
import type { Metadata } from "next";
import { headers } from "next/headers";
import { redirect } from "next/navigation";
import { PropsWithChildren } from "react";
import { ToastContainer } from "react-toastify";

export const metadata: Metadata = {
  title: "ISP-client",
  description: "Software company",
};
export default async function ClientLayout({ children }: PropsWithChildren) {
  const hostname = await getHostName();
  const data = await getPublicData(`/api/company-data?host=${hostname}`);
  if (data?.message === "Unauthenticated.") {
    return redirect("/sign-in");
  }
  return (
    <>
      <ClientCompanyContextProvider companyData={data?.data}>
        <div className="client">
          <NavbarMain />
          <TanstackProvider>
            <ToastContainer
              position="bottom-right"
              pauseOnFocusLoss={false}
              pauseOnHover={false}
            />
            <div className="md:container lg:container md:mx-auto sm:container sm:mx-auto lg:mx-auto">
              {children}
            </div>
          </TanstackProvider>
        </div>
      </ClientCompanyContextProvider>
    </>
  );
}
export async function getHostName() {
  const requestHeaders = headers();
  let host = requestHeaders.get("x-forwarded-host");
  if (!host) {
    host = requestHeaders.get("host");
  }
  if (host?.includes(":")) {
    host = host.split(":")[0];
  }
  return host;
}
