Files
trahn-trade/trahn-trade-frontend/src/App.jsx
KS Jannette af696ed462 update
2026-02-22 17:17:27 -05:00

79 lines
2.0 KiB
JavaScript

import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { AuthProvider, useAuth } from './contexts/AuthContext';
import { TradingDataProvider } from './contexts/TradingDataContext';
import { ProtectedRoute } from './components/ProtectedRoute';
import { Dashboard } from './pages/Dashboard';
import { Login } from './pages/Login';
import { Signup } from './pages/Signup';
import './App.css';
const queryClient = new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
retry: 3,
retryDelay: 2000,
staleTime: 30000,
},
},
});
function PublicRoute({ children }) {
const { currentUser } = useAuth();
if (currentUser) {
return <Navigate to="/" replace />;
}
return children;
}
function AppRoutes() {
return (
<Routes>
<Route
path="/"
element={
<ProtectedRoute>
<Dashboard />
</ProtectedRoute>
}
/>
<Route
path="/login"
element={
<PublicRoute>
<Login />
</PublicRoute>
}
/>
<Route
path="/signup"
element={
<PublicRoute>
<Signup />
</PublicRoute>
}
/>
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
);
}
function App() {
return (
<QueryClientProvider client={queryClient}>
<Router>
<AuthProvider>
<TradingDataProvider>
<AppRoutes />
</TradingDataProvider>
</AuthProvider>
</Router>
</QueryClientProvider>
);
}
export default App;