diff options
| author | zwlucas <lucas.fariamo08@gmail.com> | 2026-07-25 21:23:29 +0000 |
|---|---|---|
| committer | zwlucas <lucas.fariamo08@gmail.com> | 2026-07-25 21:23:29 +0000 |
| commit | ef55d9bb24430610b60c1b77821307cd72c08c55 (patch) | |
| tree | e6935a810b34370b0a4c821e55f6397aac50c832 /web/src/App.tsx | |
| download | helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.tar.gz helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.zip | |
Signed-off-by: zwlucas <lucas.fariamo08@gmail.com>
Diffstat (limited to 'web/src/App.tsx')
| -rw-r--r-- | web/src/App.tsx | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/web/src/App.tsx b/web/src/App.tsx new file mode 100644 index 0000000..e5bf00e --- /dev/null +++ b/web/src/App.tsx @@ -0,0 +1,39 @@ +/** + * App.tsx — Raiz da aplicação com todos os providers globais. + */ + +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { RouterProvider } from 'react-router-dom'; +import { AuthProvider } from './context/AuthContext'; +import { ToastProvider } from './context/ToastContext'; +import { router } from './router'; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 60 * 1000, + gcTime: 5 * 60 * 1000, + retry: (failureCount, error) => { + if (error instanceof Error && 'status' in error) { + const status = (error as { status: number }).status; + if (status >= 400 && status < 500) return false; + } + return failureCount < 2; + }, + refetchOnWindowFocus: true, + }, + mutations: { retry: false }, + }, +}); + +export default function App() { + return ( + <AuthProvider> + <QueryClientProvider client={queryClient}> + <ToastProvider> + <RouterProvider router={router} /> + </ToastProvider> + </QueryClientProvider> + </AuthProvider> + ); +} |