S01Nour
feat: implement core application routing with protected routes and authentication logic
51c19ea
| import React from 'react'; | |
| import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'; | |
| import MainLayout from './layouts/MainLayout.tsx'; | |
| import HomePage from './pages/HomePage.tsx'; | |
| import AnalysisPage from './pages/AnalysisPage.tsx'; | |
| import ChatPage from './pages/ChatPage.tsx'; | |
| import ProtectedRoute from './components/common/ProtectedRoute.tsx'; | |
| import { useAuth } from './hooks/index.ts'; | |
| const App = () => { | |
| // add Use reactive authentication state | |
| const { isAuthenticated } = useAuth(); | |
| return ( | |
| <BrowserRouter> | |
| <MainLayout> | |
| <Routes> | |
| <Route | |
| path="/" | |
| element={ | |
| isAuthenticated ? ( | |
| <Navigate to="/analysis" replace /> | |
| ) : ( | |
| <HomePage /> | |
| ) | |
| } | |
| /> | |
| <Route | |
| path="/analysis" | |
| element={ | |
| <ProtectedRoute> | |
| <AnalysisPage /> | |
| </ProtectedRoute> | |
| } | |
| /> | |
| <Route | |
| path="/chat" | |
| element={ | |
| <ProtectedRoute> | |
| <ChatPage /> | |
| </ProtectedRoute> | |
| } | |
| /> | |
| <Route path="*" element={<Navigate to="/" replace />} /> | |
| </Routes> | |
| </MainLayout> | |
| </BrowserRouter> | |
| ); | |
| }; | |
| export default App; | |