/// import { HeadContent, Link, Outlet, Scripts, createRootRouteWithContext, } from '@tanstack/react-router' import { TanStackRouterDevtools } from '@tanstack/react-router-devtools' import * as React from 'react' import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary' import { NotFound } from '~/components/NotFound' import appCss from '~/styles/app.css?url' import { seo } from '~/utils/seo' import MainPage from "~/components/function/layout/mainPage"; import TopMenu from "~/components/function/layout/topMenu"; import { UserMenu } from "~/components/function/layout/userMenu"; import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import MainMenu from '~/components/function/layout/mainMenu' import { createServerFn } from "@tanstack/react-start"; import { auth } from "~/lib/auth"; import { getRequestHeaders } from "@tanstack/react-start/server"; import { NuqsAdapterWrapper } from "~/components/function/data-table/components/src/providers/nuqs-adapter"; import { Toaster } from 'sonner' // Server function for SSR - uses Better Auth's server-side session handling const getServerSession = createServerFn().handler(async () => { try { // Get the incoming request from TanStack Start const requestHeaders = getRequestHeaders(); const sessionResponse = await auth.api.getSession({ headers: requestHeaders || new Headers(), }); return sessionResponse; } catch (error) { console.error('Server session error:', error); return { data: null, error: null }; } }); export const Route = createRootRouteWithContext<{ queryClient: QueryClient; session?: any; }>()({ beforeLoad: async ({ location }) => { const session = await getServerSession(); return { session }; }, head: () => ({ meta: [ { charSet: 'utf-8', }, { name: 'viewport', content: 'width=device-width, initial-scale=1', }, ...seo({ title: '---', description: `---`, }), ], links: [ { rel: 'stylesheet', href: appCss }, { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png', }, { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/favicon-32x32.png', }, { rel: 'icon', type: 'image/png', sizes: '16x16', href: '/favicon-16x16.png', }, { rel: 'manifest', href: '/site.webmanifest', color: '#fffff' }, { rel: 'icon', href: '/favicon.ico' }, ], scripts: [ { src: '/customScript.js', type: 'text/javascript', }, ], }), errorComponent: (props) => { return ( ); }, component: RootComponent, notFoundComponent: () => , }) function RootComponent() { const { queryClient } = Route.useRouteContext(); return ( ); } function RootDocument({ children }: { children: React.ReactNode }) { const { session } = Route.useRouteContext(); const metaTags = seo({ title: "Servicehell", description: "Display your collection online", }); return (
Home
{session && 'user' in session && session.user ? ( ) : ( )}
{children}
); }