import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
import Navbar from '@/components/Navbar'
import Footer from '@/components/landingPage/Footer'
import './globals.css'
import { getPageSession } from '@/auth/lucia'
import { prisma } from '@/lib/prisma'
import CookieConsent from '@/components/CookieConsent'
import SocketProvider from '@/components/socket/SocketProvider' // ⬅️ new

const font = Inter({ subsets: ['latin'] })

export const metadata: Metadata = {
  title: 'MyBestCall',
  description: 'Generated by create next app',
}

interface Props {
  children: React.ReactNode
  modal: React.ReactNode
  calendar: React.ReactNode
}

export default async function RootLayout(props: Props) {
  const session = await getPageSession()
  const userId = session?.user?.userId ?? null

  let userInfo
  if (session) {
    userInfo = await prisma.user.findUnique({
      where: { id: session.user.userId },
    })
  }

  return (
    <html lang="en">
      <body className={font.className}>
        {/* SocketProvider global : enregistre l'utilisateur et écoute les updates */}
        <SocketProvider userId={userId}>
          <Navbar user={session} userInfo={userInfo} />
          <main className="relative ">{props.children}</main>
          {props.modal}
          {props.calendar}
          <Footer />
          <CookieConsent />
        </SocketProvider>
      </body>
    </html>
  )
}
