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 bg-gray-900">
                    <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 bg-gray-900">
                            {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;
}
