import { MutationCache, QueryCache, QueryClient, QueryClientProvider, } from "@tanstack/react-query" import { createRouter, RouterProvider } from "@tanstack/react-router" import { StrictMode } from "react" import ReactDOM from "react-dom/client" import { ApiError, OpenAPI } from "./client" import { ThemeProvider } from "./components/theme-provider" import { Toaster } from "./components/ui/sonner" import "./index.css" import { clearAuthAndRedirectToLogin, shouldHandleAuthError, } from "./lib/auth-error" import { routeTree } from "./routeTree.gen" OpenAPI.BASE = import.meta.env.VITE_API_URL OpenAPI.TOKEN = async () => { return localStorage.getItem("access_token") || "" } OpenAPI.interceptors.response.use((response) => { if (shouldHandleAuthError(response.status, response.data)) { clearAuthAndRedirectToLogin() } return response }) const handleApiError = (error: Error) => { if (!(error instanceof ApiError)) { return } if (shouldHandleAuthError(error.status, error.body)) { clearAuthAndRedirectToLogin() } } const queryClient = new QueryClient({ queryCache: new QueryCache({ onError: handleApiError, }), mutationCache: new MutationCache({ onError: handleApiError, }), }) const router = createRouter({ routeTree }) declare module "@tanstack/react-router" { interface Register { router: typeof router } } ReactDOM.createRoot(document.getElementById("root")!).render( , )