import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import React from "react"; import "./globals.scss"; import { SignalRProvider } from '@/contexts/signalrProvider'; import { AuthProvider } from "@/contexts/authProvider"; import { MemberProvider } from "@/contexts/memberProvider"; import { ConfigProvider } from "@/contexts/configProvider"; import { getAccessToken, getSignalRCryptoUrl, getSignalRChatUrl } from "@/lib/utils/server"; import { fetchConfig } from "@/lib/api/system"; const geistSans = Geist({ variable: "--font-geist-sans", subsets: ["latin"], }); const geistMono = Geist_Mono({ variable: "--font-geist-mono", subsets: ["latin"], }); export async function generateMetadata(): Promise { const config = (await fetchConfig())?.data; return { title: config?.basic?.siteName ?? 'bitforum', description: config?.meta?.description ?? '', keywords: config?.meta?.keywords ?? '', authors: config?.meta?.author ? [{ name: config.meta.author }] : undefined, applicationName: config?.meta.applicationName, generator: config?.meta.generator, robots: config?.meta.robots }; } export default async function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { const accessToken = await getAccessToken(); const signalRCryptoUrl = await getSignalRCryptoUrl(); const signalRChatUrl = await getSignalRChatUrl(); const config = (await fetchConfig())?.data; return ( {children} ); }