2025-08-28 10:41:04 +02:00
|
|
|
import { Suspense } from 'react';
|
|
|
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
|
|
|
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
|
|
|
|
|
import { BrowserRouter } from 'react-router-dom';
|
2025-08-03 19:23:20 +02:00
|
|
|
import { Toaster } from 'react-hot-toast';
|
2025-08-28 10:41:04 +02:00
|
|
|
import { ErrorBoundary } from './components/shared/ErrorBoundary';
|
|
|
|
|
import { LoadingSpinner } from './components/shared/LoadingSpinner';
|
|
|
|
|
import { AppRouter } from './router/AppRouter';
|
|
|
|
|
import { ThemeProvider } from './contexts/ThemeContext';
|
|
|
|
|
import { AuthProvider } from './contexts/AuthContext';
|
|
|
|
|
import { SSEProvider } from './contexts/SSEContext';
|
2025-08-11 07:01:08 +02:00
|
|
|
|
2025-08-28 10:41:04 +02:00
|
|
|
const queryClient = new QueryClient({
|
|
|
|
|
defaultOptions: {
|
|
|
|
|
queries: {
|
|
|
|
|
staleTime: 5 * 60 * 1000,
|
|
|
|
|
gcTime: 10 * 60 * 1000,
|
|
|
|
|
retry: 3,
|
|
|
|
|
refetchOnWindowFocus: false,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
});
|
2025-08-03 19:23:20 +02:00
|
|
|
|
2025-08-28 10:41:04 +02:00
|
|
|
function App() {
|
2025-08-16 20:13:40 +02:00
|
|
|
return (
|
|
|
|
|
<ErrorBoundary>
|
2025-08-28 10:41:04 +02:00
|
|
|
<QueryClientProvider client={queryClient}>
|
|
|
|
|
<BrowserRouter>
|
|
|
|
|
<ThemeProvider>
|
|
|
|
|
<AuthProvider>
|
|
|
|
|
<SSEProvider>
|
|
|
|
|
<Suspense fallback={<LoadingSpinner overlay />}>
|
|
|
|
|
<AppRouter />
|
|
|
|
|
<Toaster
|
|
|
|
|
position="top-right"
|
|
|
|
|
toastOptions={{
|
|
|
|
|
duration: 4000,
|
|
|
|
|
style: {
|
|
|
|
|
background: '#363636',
|
|
|
|
|
color: '#fff',
|
|
|
|
|
},
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</Suspense>
|
|
|
|
|
</SSEProvider>
|
|
|
|
|
</AuthProvider>
|
|
|
|
|
</ThemeProvider>
|
|
|
|
|
</BrowserRouter>
|
|
|
|
|
<ReactQueryDevtools initialIsOpen={false} />
|
|
|
|
|
</QueryClientProvider>
|
2025-08-16 20:13:40 +02:00
|
|
|
</ErrorBoundary>
|
|
|
|
|
);
|
2025-08-28 10:41:04 +02:00
|
|
|
}
|
2025-08-03 19:23:20 +02:00
|
|
|
|
|
|
|
|
export default App;
|