import { useEffect, useState } from "react"; import { BrowserRouter as Router, Routes, Route, Navigate, } from "react-router-dom"; import Profile from "@/pages/profile"; import Chat from "@/pages/chat"; import Auth from "@/pages/auth"; import PracticeZone from "@/pages/practice-zone"; // Add this import import apiClient from "@/lib/api-client"; import { GET_USERINFO_ROUTE } from "@/lib/constants"; import { useAppStore } from "@/store"; const PrivateRoute = ({ children }) => { const { userInfo } = useAppStore(); const isAuthenticated = !!userInfo; return isAuthenticated ? children : ; }; const AuthRoute = ({ children }) => { const { userInfo } = useAppStore(); const isAuthenticated = !!userInfo; return isAuthenticated ? : children; }; function App() { const { userInfo, setUserInfo } = useAppStore(); const [loading, setLoading] = useState(true); useEffect(() => { const getUserData = async () => { try { const response = await apiClient.get(GET_USERINFO_ROUTE, { withCredentials: true, }); if (response.status === 200 && response.data.id) { setUserInfo(response.data); } else { setUserInfo(undefined); } } catch (error) { setUserInfo(undefined); } finally { setLoading(false); } }; if (!userInfo) { getUserData(); } else { setLoading(false); } }, [userInfo, setUserInfo]); if (loading) { return
Loading...
; } return ( } /> } /> } /> } /> } /> ); } export default App;