import React from 'react'; import { useEffect, useState } from 'react'; import { Routes, Route, Navigate, useLocation } from 'react-router-dom'; // Page main import Home from './pages/Home/Home'; // Pages espace enseignant import Dashboard from './pages/Teacher/Dashboard/Dashboard'; import Share from './pages/Teacher/Share/Share'; import Register from './pages/AuthManager/providers/SimpleLogin/Register'; import ResetPassword from './pages/AuthManager/providers/SimpleLogin/ResetPassword'; import ManageRoom from './pages/Teacher/ManageRoom/ManageRoom'; import QuizForm from './pages/Teacher/EditorQuiz/EditorQuiz'; // Pages espace étudiant import JoinRoom from './pages/Student/JoinRoom/JoinRoom'; // Pages authentification selection import AuthDrawer from './pages/AuthManager/AuthDrawer'; // Header/Footer import import Header from './components/Header/Header'; import Footer from './components/Footer/Footer'; import ApiService from './services/ApiService'; import OAuthCallback from './pages/AuthManager/callback/AuthCallback'; const App: React.FC = () => { const [isAuthenticated, setIsAuthenticated] = useState(ApiService.isLoggedIn()); const [isTeacherAuthenticated, setIsTeacherAuthenticated] = useState(ApiService.isLoggedInTeacher()); const [isRoomRequireAuthentication, setRoomsRequireAuth] = useState(null); const location = useLocation(); // Check login status every time the route changes useEffect(() => { const checkLoginStatus = () => { setIsAuthenticated(ApiService.isLoggedIn()); setIsTeacherAuthenticated(ApiService.isLoggedInTeacher()); }; const fetchAuthenticatedRooms = async () => { const data = await ApiService.getRoomsRequireAuth(); setRoomsRequireAuth(data); }; checkLoginStatus(); fetchAuthenticatedRooms(); }, [location]); const handleLogout = () => { ApiService.logout(); setIsAuthenticated(false); setIsTeacherAuthenticated(false); }; return (
{/* Page main */} } /> {/* Pages espace enseignant */} : } /> : } /> : } /> : } /> {/* Pages espace étudiant */} : } /> {/* Pages authentification */} } /> {/* Pages enregistrement */} } /> {/* Pages rest password */} } /> {/* Pages authentification sélection */} } />
); }; export default App;