import { useEffect, useState } from "react"; import LabSelection from "./login.jsx"; import { QueryClientProvider } from '@tanstack/react-query' import { queryClientInstance } from '@/lib/query-client' import NavigationTracker from '@/lib/NavigationTracker' import { pagesConfig } from './pages.config' import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; import PageNotFound from './lib/PageNotFound'; import { AuthProvider, useAuth } from '@/lib/AuthContext'; import UserNotRegisteredError from '@/components/UserNotRegisteredError'; const { Pages, Layout, mainPage } = pagesConfig; const mainPageKey = mainPage ?? Object.keys(Pages)[0]; const MainPage = mainPageKey ? Pages[mainPageKey] : <>; const LayoutWrapper = ({ children, currentPageName }) => Layout ? {children} : <>{children}; const AuthenticatedApp = () => { const { isLoadingAuth, isLoadingPublicSettings, authError, navigateToLogin } = useAuth(); // Show loading spinner while checking app public settings or auth if (isLoadingPublicSettings || isLoadingAuth) { return (
); } // Handle authentication errors if (authError) { if (authError.type === 'user_not_registered') { return ; } else if (authError.type === 'auth_required') { // Redirect to login automatically navigateToLogin(); return null; } } // Render the main app return ( } /> {Object.entries(Pages).map(([path, Page]) => ( } /> ))} } /> ); }; function App() { const [labApproved, setLabApproved] = useState(false); if (!labApproved) { return setLabApproved(true)} />; } return ( ); } export default App;