aboutsummaryrefslogtreecommitdiff
path: root/web/src/App.tsx
diff options
context:
space:
mode:
authorzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
committerzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
commitef55d9bb24430610b60c1b77821307cd72c08c55 (patch)
treee6935a810b34370b0a4c821e55f6397aac50c832 /web/src/App.tsx
downloadhelpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.tar.gz
helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.zip
feat: upload of the projectHEADmaster
Signed-off-by: zwlucas <lucas.fariamo08@gmail.com>
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>
+ );
+}