import NewTiDBAIWidget from "@/app/(main)/client";
import { Gtag } from "@/app/(main)/gtag";
import Providers from "@/app/providers";
import RootLayout from "@/components/pages/root-layout";
import { cachedGetMe, cachedGetUserGroups } from "@/lib/api/server-labs";
import Script from "next/script";
import { ReactNode } from "react";

export default async function MainLayout({
  children,
}: {
  children: ReactNode;
}) {
  const [me, userGroups] = await Promise.all([
    cachedGetMe(),
    cachedGetUserGroups(),
  ]);

  return (
    <>
      <Providers me={me} userGroups={userGroups}>
        <RootLayout>{children}</RootLayout>
      </Providers>
      <Gtag userId={me?.id} isStaff={me?.is_staff ?? false} />
      {process.env.HUBSPOT_SCRIPT && (
        <Script
          id="hs-script-loader"
          strategy="lazyOnload"
          src={process.env.HUBSPOT_SCRIPT}
          async
          defer
        />
      )}
      <NewTiDBAIWidget />
    </>
  );
}
