import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; import { useEffect } from 'react'; import { useAuthStore } from './store/authStore'; import { useThemeStore } from './store/themeStore'; import { authService } from './services/authService'; import AuthPage from './pages/AuthPage'; import VerifyEmailPage from './pages/VerifyEmailPage'; import ResetPasswordPage from './pages/ResetPasswordPage'; import ForgotPasswordPage from './pages/ForgotPasswordPage'; import ChatPage from './pages/ChatPage'; import ProfilePage from './pages/ProfilePage'; import SettingsPage from './pages/SettingsPage'; function PrivateRoute({ children }: { children: React.ReactNode }) { const isAuthenticated = useAuthStore((state) => state.isAuthenticated); const isLoading = useAuthStore((state) => state.isLoading); if (isLoading) { return (
); } return isAuthenticated ? <>{children} : ; } function App() { const setUser = useAuthStore((state) => state.setUser); const setLoading = useAuthStore((state) => state.setLoading); const theme = useThemeStore((state) => state.theme); useEffect(() => { // Apply theme on mount document.documentElement.setAttribute('data-theme', theme); }, [theme]); useEffect(() => { const checkAuth = async () => { try { const user = await authService.getCurrentUser(); setUser(user); } catch (error) { setUser(null); } finally { setLoading(false); } }; checkAuth(); }, []); // Пустой массив зависимостей - выполнится только один раз return ( } /> } /> } /> } /> } /> } /> } /> } /> } /> ); } export default App;