39 lines
1.0 KiB
TypeScript
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;
|