import { QueryClient } from "@tanstack/react-query"; import { createRouter as createTanStackRouter } from "@tanstack/react-router"; import { routerWithQueryClient } from "@tanstack/react-router-with-query"; import { ConvexQueryClient, useConvexAuth } from "@convex-dev/react-query"; import { ConvexAuthProvider } from "@convex-dev/auth/react"; import { routeTree } from "./routeTree.gen"; export function createRouter() { const CONVEX_URL = import.meta.env.VITE_CONVEX_URL; if (!CONVEX_URL) { console.error("missing envar VITE_CONVEX_URL"); } const convexQueryClient = new ConvexQueryClient(CONVEX_URL); const queryClient = new QueryClient({ defaultOptions: { queries: { queryKeyHashFn: convexQueryClient.hashFn(), queryFn: convexQueryClient.queryFn(), }, }, }); convexQueryClient.connect(queryClient); const router = routerWithQueryClient( createTanStackRouter({ routeTree, // biome-ignore lint/style/noNonNullAssertion: Docs say this is ok context: { queryClient, auth: undefined! }, Wrap: ({ children }) => ( {children} ), defaultPreload: "intent", defaultErrorComponent: () =>
Error
, defaultNotFoundComponent: () =>
Not Found
, }), queryClient, ); return router; } declare module "@tanstack/react-router" { interface Register { router: ReturnType; } }