itcloud/frontend/src/App.tsx

39 lines
1.0 KiB
TypeScript

import { Routes, Route, Navigate } from 'react-router-dom';
import { Box } from '@mui/material';
import LoginPage from './pages/LoginPage';
import RegisterPage from './pages/RegisterPage';
import LibraryPage from './pages/LibraryPage';
import ShareViewPage from './pages/ShareViewPage';
import { useAuth } from './hooks/useAuth';
function PrivateRoute({ children }: { children: React.ReactNode }) {
const { isAuthenticated, loading } = useAuth();
if (loading) {
return <Box>Loading...</Box>;
}
return isAuthenticated ? <>{children}</> : <Navigate to="/login" />;
}
function App() {
return (
<Routes>
<Route path="/login" element={<LoginPage />} />
<Route path="/register" element={<RegisterPage />} />
<Route path="/share/:token" element={<ShareViewPage />} />
<Route
path="/library"
element={
<PrivateRoute>
<LibraryPage />
</PrivateRoute>
}
/>
<Route path="/" element={<Navigate to="/library" />} />
</Routes>
);
}
export default App;