mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-30 23:14:37 +00:00
- 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.
65 lines
1.9 KiB
TypeScript
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;
|