A realtime multiplayer version of the boardgame Ricochet Robots
at master 56 lines 1.5 kB view raw
1import "~/styles/globals.css"; 2 3import { type Metadata } from "next"; 4import { Geist } from "next/font/google"; 5 6import { TRPCReactProvider } from "~/trpc/react"; 7import { HydrateClient } from "~/trpc/server"; 8import { Toaster } from "~/components/ui/sonner"; 9import { 10 validateSessionToken, 11 validateSessionTokenCookie, 12} from "~/server/auth/validate"; 13import { AuthUserProvider } from "./_components/authUserProvider"; 14import { cookies } from "next/headers"; 15 16export const metadata: Metadata = { 17 title: "Create T3 App", 18 description: "Generated by create-t3-app", 19 icons: [{ rel: "icon", url: "/favicon.ico" }], 20}; 21 22const geist = Geist({ 23 subsets: ["latin"], 24 variable: "--font-geist-sans", 25}); 26 27export default async function RootLayout({ 28 children, 29}: Readonly<{ children: React.ReactNode }>) { 30 const authUser = await validateSessionTokenCookie(); 31 const cookie = await cookies(); 32 33 return ( 34 <html lang="en" className={`${geist.variable}`}> 35 <body> 36 <TRPCReactProvider> 37 <HydrateClient> 38 <AuthUserProvider 39 user={ 40 authUser 41 ? { 42 ...authUser, 43 sessionToken: cookie.get("rrSessionToken")!.value, 44 } 45 : null 46 } 47 > 48 {children} 49 </AuthUserProvider> 50 </HydrateClient> 51 </TRPCReactProvider> 52 <Toaster /> 53 </body> 54 </html> 55 ); 56}