Files
openhuman/src/App.tsx
T
Steven Enamakel 35cf5d7bf3 Refactor routing in App component to implement public and protected routes
- Updated the App component to utilize PublicRoute and ProtectedRoute components for managing access to different pages based on authentication and onboarding status.
- Introduced a new DefaultRedirect component to handle redirection logic based on user state, improving user experience by directing users to the appropriate page.
- Cleaned up route definitions for better clarity and maintainability.

These changes enhance the routing structure and improve the overall navigation flow within the application.
2026-01-28 04:35:12 +05:30

65 lines
1.9 KiB
TypeScript

import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';
import { store, persistor } from './store';
import Welcome from './pages/Welcome';
import Login from './pages/Login';
import Onboarding from './pages/onboarding/Onboarding';
import Home from './pages/Home';
import PublicRoute from './components/PublicRoute';
import ProtectedRoute from './components/ProtectedRoute';
import DefaultRedirect from './components/DefaultRedirect';
function App() {
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<Router>
<Routes>
{/* Public routes - redirect to /home or /onboarding if logged in */}
<Route
path="/"
element={
<PublicRoute>
<Welcome />
</PublicRoute>
}
/>
<Route
path="/login"
element={
<PublicRoute>
<Login />
</PublicRoute>
}
/>
{/* Protected routes */}
<Route
path="/onboarding"
element={
<ProtectedRoute requireAuth={true} requireOnboarded={false}>
<Onboarding />
</ProtectedRoute>
}
/>
<Route
path="/home"
element={
<ProtectedRoute requireAuth={true} requireOnboarded={true} redirectTo="/onboarding">
<Home />
</ProtectedRoute>
}
/>
{/* Default redirect based on auth status */}
<Route path="*" element={<DefaultRedirect />} />
</Routes>
</Router>
</PersistGate>
</Provider>
);
}
export default App;