import { createRouter } from "@tanstack/react-router"; import { MutationCache, QueryClient, QueryClientProvider, } from "@tanstack/react-query"; // import { setupRouterSsrQueryIntegration } from "@tanstack/react-router-ssr-query"; import { toast } from "sonner"; import { ConvexQueryClient } from "@convex-dev/react-query"; import { ConvexAuthProvider } from "@convex-dev/auth/react"; import { routeTree } from "./routeTree.gen"; import { DefaultCatchBoundary } from "./components/DefaultCatchBoundary"; import { NotFound } from "./components/NotFound"; import { ThemeProvider } from "./components/ThemeProvider"; export function getRouter() { const CONVEX_URL = (import.meta as any).env.VITE_CONVEX_URL!; if (!CONVEX_URL) { console.error("missing envar CONVEX_URL"); } const convexQueryClient = new ConvexQueryClient(CONVEX_URL); const queryClient: QueryClient = new QueryClient({ defaultOptions: { queries: { queryKeyHashFn: convexQueryClient.hashFn(), queryFn: convexQueryClient.queryFn(), }, }, mutationCache: new MutationCache({ onError: (error) => { toast.error(error.message); }, }), }); convexQueryClient.connect(queryClient); const router = createRouter({ routeTree, defaultPreload: "intent", defaultErrorComponent: DefaultCatchBoundary, defaultNotFoundComponent: () => , context: { queryClient }, Wrap: ({ children }) => ( {children} ), scrollRestoration: true, }); return router; }