import type { Metadata} from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { ThemeProvider } from "@/components/theme-provider";
import { QueryProvider } from "@/components/query-provider";
import { AuthProvider, getCookie } from "@/contexts/auth-context";
import { Toaster } from "sonner";
import Head from "next/head";
import { useSetting } from "@/hooks/useClientApp";
import IpGuard from "@/guards/ip-guard";



const geistSans = Geist({
  variable: "--font-geist-sans",
  subsets: ["latin"],
});

const geistMono = Geist_Mono({
  variable: "--font-geist-mono",
  subsets: ["latin"],
});

import api from "@/lib/axiosClient";
import { env } from "process";
import { ApiResponseClient, ApiResponseClient2 } from "@/types/response";
import { Settings } from "@/types/settings";

export async function generateMetadata(): Promise<Metadata> {

  let userCookieValue = "";
  let tokenCookieValue = "";
  try {
    const { cookies } = await import('next/headers');
    userCookieValue = (await cookies()).get('__user__')?.value || "";
    tokenCookieValue = (await cookies()).get('__token__')?.value || "";
  } catch {
    userCookieValue = "";
  }

  try {
    const response = await api.post<Settings>("/v1.0/setting/service/find", {
      setting: 1,
      userCookie: userCookieValue,
    },{
      headers:{
        Authorization:`Bearer ${tokenCookieValue}`
      }
    });
    const detail = response.data || {};
    return {
      title: `Whatsapp ${detail?.name}` || "Whatsapp",
      description: detail?.description || "",
      icons:[
        {
          media: '(prefers-color-scheme: light)',
          url:detail.favicon,
          sizes:"256x256"
        },
        {
          media: '(prefers-color-scheme: light)',
          url:detail.favicon,
        },
        {
          media: '(prefers-color-scheme: dark)',
          url:detail.favicon,
          sizes:"256x256"
        },
        {
          media: '(prefers-color-scheme: dark)',
          url:detail.favicon,
        },
      ],
    };
  } catch (error) {
    return {
      title: "Whatsapp",
      description: "",
    };
  }
}
export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en" suppressHydrationWarning>
      <body
        className={`${geistSans.variable} ${geistMono.variable} antialiased`}
      >
        <ThemeProvider
          attribute="class"
          defaultTheme="system"
          enableSystem
          disableTransitionOnChange
        >
          <QueryProvider>
            <AuthProvider>
              <IpGuard>
                {children}
              </IpGuard>
            </AuthProvider>
          </QueryProvider>
        </ThemeProvider>
        <Toaster position="top-right" closeButton={true}/>
      </body>
    </html>
  );
}
