aboutsummaryrefslogtreecommitdiff
path: root/web/src/App.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'web/src/App.tsx')
-rw-r--r--web/src/App.tsx39
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>
+ );
+}