50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import { QueryClient } from "@tanstack/react-query";
|
|
import { createRouter as createTanStackRouter } from "@tanstack/react-router";
|
|
import { setupRouterSsrQueryIntegration } from "@tanstack/react-router-ssr-query";
|
|
import { routeTree } from "./routeTree.gen";
|
|
import { DefaultCatchBoundary } from "../components/DefaultCatchBoundary";
|
|
import { defaultHeaderConfig } from "@/features/core/hooks/use-router-config";
|
|
|
|
export function getRouter() {
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: 60 * 1000, // 60 seconds
|
|
gcTime: 5 * 60 * 1000, // 5 minutes
|
|
refetchOnWindowFocus: false,
|
|
refetchOnReconnect: "always",
|
|
retry: 1,
|
|
},
|
|
},
|
|
});
|
|
|
|
const router = createTanStackRouter({
|
|
routeTree,
|
|
context: {
|
|
queryClient,
|
|
auth: undefined!,
|
|
header: defaultHeaderConfig,
|
|
refresh: [],
|
|
withPadding: true,
|
|
fullWidth: false,
|
|
},
|
|
defaultPreload: "intent",
|
|
defaultErrorComponent: DefaultCatchBoundary,
|
|
scrollRestoration: true,
|
|
defaultViewTransition: false,
|
|
});
|
|
|
|
setupRouterSsrQueryIntegration({
|
|
router,
|
|
queryClient
|
|
})
|
|
|
|
return router;
|
|
}
|
|
|
|
declare module "@tanstack/react-router" {
|
|
interface Register {
|
|
router: ReturnType<typeof getRouter>;
|
|
}
|
|
}
|