// root.tsx (omitting some lines)
export const useSession = () => {
return createServerData$(
async (_, { request }) => {
return await getSession(request, authOptions)
},
{ key: () => ["auth_user"] }
)
}
export default function Root() {
const session = useSession()
return (
<Html lang="en">
<Head>
</Head>
<Body>
<SessionProvider>
<Suspense>
<ErrorBoundary>
<Show when={session()}
fallback={
<div class="flex flex-col items-center justify-center gap-4">
<button
onClick={() => signIn("discord", { redirectTo: "/" })}
class="rounded-full bg-black/10 px-10 py-3 font-semibold"
>
Sign In
</button>
</div>
}
>
<div class="flex flex-row">
<Nav />
<Routes>
<FileRoutes />
</Routes>
</div>
</Show>
</ErrorBoundary>
</Suspense>
</SessionProvider>
<Scripts />
</Body>
</Html>
);
}
// root.tsx (omitting some lines)
export const useSession = () => {
return createServerData$(
async (_, { request }) => {
return await getSession(request, authOptions)
},
{ key: () => ["auth_user"] }
)
}
export default function Root() {
const session = useSession()
return (
<Html lang="en">
<Head>
</Head>
<Body>
<SessionProvider>
<Suspense>
<ErrorBoundary>
<Show when={session()}
fallback={
<div class="flex flex-col items-center justify-center gap-4">
<button
onClick={() => signIn("discord", { redirectTo: "/" })}
class="rounded-full bg-black/10 px-10 py-3 font-semibold"
>
Sign In
</button>
</div>
}
>
<div class="flex flex-row">
<Nav />
<Routes>
<FileRoutes />
</Routes>
</div>
</Show>
</ErrorBoundary>
</Suspense>
</SessionProvider>
<Scripts />
</Body>
</Html>
);
}