Uecko_ERP/apps/web/src/app.tsx

64 lines
2.0 KiB
TypeScript
Raw Normal View History

2025-05-17 19:12:01 +00:00
import { Toaster, TooltipProvider } from "@repo/shadcn-ui/components";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
import { I18nextProvider } from "react-i18next";
2025-05-02 21:43:51 +00:00
2025-05-19 11:59:13 +00:00
import { UnsavedWarnProvider } from "@/lib/hooks";
2025-05-17 19:12:01 +00:00
import { i18n } from "@/locales";
2025-05-09 10:45:32 +00:00
2025-05-29 11:15:28 +00:00
import { AuthProvider, createAuthService } from "@erp/auth/client";
2025-05-27 17:47:03 +00:00
import { DataSourceProvider, createAxiosDataSource, createAxiosInstance } from "@erp/core/client";
2025-05-05 17:11:44 +00:00
2025-05-29 11:15:28 +00:00
import "./app.css";
import { clearAccessToken, getAccessToken, setAccessToken } from "./lib";
import { AppRoutes } from "./routes";
2025-05-27 17:47:03 +00:00
2025-05-18 11:53:00 +00:00
export const App = () => {
2025-05-17 19:12:01 +00:00
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: false,
staleTime: 10000, // Specify a staleTime to only fetch when the data is older than a certain amount of time
},
},
});
2025-05-02 21:43:51 +00:00
2025-05-29 11:15:28 +00:00
const axiosInstance = createAxiosInstance({
baseURL: import.meta.env.VITE_API_URL,
getAccessToken,
onAuthError: () => {
clearAccessToken();
window.location.href = "/login"; // o usar navegación programática
},
});
console.log(axiosInstance.defaults.env);
const dataSource = createAxiosDataSource(axiosInstance);
2025-05-27 17:47:03 +00:00
2025-05-02 21:43:51 +00:00
return (
2025-05-17 19:12:01 +00:00
<I18nextProvider i18n={i18n}>
<QueryClientProvider client={queryClient}>
2025-05-27 17:47:03 +00:00
<DataSourceProvider dataSource={dataSource}>
2025-05-29 11:15:28 +00:00
<AuthProvider
params={{
getAccessToken,
setAccessToken,
clearAccessToken,
2025-06-11 15:13:44 +00:00
authService: createAuthService(),
2025-05-29 11:15:28 +00:00
}}
>
<TooltipProvider delayDuration={0}>
<UnsavedWarnProvider>
<AppRoutes />
</UnsavedWarnProvider>
</TooltipProvider>
<Toaster />
{import.meta.env.DEV && <ReactQueryDevtools initialIsOpen={false} />}
</AuthProvider>
2025-05-17 19:12:01 +00:00
</DataSourceProvider>
</QueryClientProvider>
</I18nextProvider>
2025-05-02 21:43:51 +00:00
);
2025-05-18 11:53:00 +00:00
};