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