import { useState, useEffect } from 'react'; import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'; import { apiCall } from './config/api'; import VipList from './pages/VipList'; import VipDetails from './pages/VipDetails'; import DriverList from './pages/DriverList'; import DriverDashboard from './pages/DriverDashboard'; import Dashboard from './pages/Dashboard'; import AdminDashboard from './pages/AdminDashboard'; import UserManagement from './components/UserManagement'; import Login from './components/Login'; import './App.css'; function App() { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { // Check if user is already authenticated const token = localStorage.getItem('authToken'); if (token) { apiCall('/auth/me', { headers: { 'Authorization': `Bearer ${token}` } }) .then(res => { if (res.ok) { return res.json(); } else { // Token is invalid, remove it localStorage.removeItem('authToken'); throw new Error('Invalid token'); } }) .then(userData => { setUser(userData); setLoading(false); }) .catch(error => { console.error('Auth check failed:', error); setLoading(false); }); } else { setLoading(false); } }, []); const handleLogin = (userData: any) => { setUser(userData); }; const handleLogout = () => { localStorage.removeItem('authToken'); setUser(null); // Optionally call logout endpoint apiCall('/auth/logout', { method: 'POST' }) .catch(error => console.error('Logout error:', error)); }; if (loading) { return (
Loading VIP Coordinator...
); } // Handle OAuth callback route even when not logged in if (window.location.pathname === '/auth/callback' || window.location.pathname === '/auth/google/callback') { return ; } if (!user) { return ; } return (
{/* Modern Navigation */} {/* Main Content */}
} /> } /> } /> } /> } /> } /> } />
); } export default App;