import { useEffect } from 'react' import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom' import { useAppDispatch, useAppSelector } from '@/hooks/useRedux' import { setUser } from '@/stores/authSlice' import { authService } from '@/services/api' import LoginPage from './pages/Login' import SignupPage from './pages/Signup' import ChatPage from './pages/Chat' import CallsPage from './pages/Calls' import SettingsPage from './pages/Settings' import AdminPage from './pages/Admin' import ProfilePage from './pages/Profile' import FriendsPage from './pages/Friends' import ProtectedRoute from '@/components/ProtectedRoute' function App() { const dispatch = useAppDispatch() const { isAuthenticated, isLoading } = useAppSelector((state) => state.auth) useEffect(() => { // Check if user is already logged in const checkAuth = async () => { const token = localStorage.getItem('token') if (token) { try { const response = await authService.getMe() dispatch(setUser(response.data)) } catch (error) { localStorage.removeItem('token') } } } checkAuth() }, [dispatch]) if (isLoading) { return (

Loading...

) } return ( {/* Public Routes */} : } /> : } /> {/* Protected Routes */} } />} /> } />} /> } />} /> } />} /> } />} /> } />} /> {/* Default redirect */} } /> ) } export default App