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;