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;
}