import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom' import { useState, useEffect } from 'react' import { initTelegramApp, getTelegramUser, isThirdPartyClient } from './utils/telegram' import { verifyAuth, authWithTelegramOAuth } from './utils/api' import { initTheme } from './utils/theme' import Layout from './components/Layout' import Feed from './pages/Feed' import Search from './pages/Search' import Notifications from './pages/Notifications' import Profile from './pages/Profile' import UserProfile from './pages/UserProfile' import CommentsPage from './pages/CommentsPage' import PostMenuPage from './pages/PostMenuPage' import TelegramLogin from './components/TelegramLogin' import './styles/index.css' function App() { const [user, setUser] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [showLogin, setShowLogin] = useState(false) useEffect(() => { // Инициализировать тему initTheme() initApp() }, []) const initApp = async () => { try { // Инициализация Telegram Web App initTelegramApp() // Получить данные пользователя из Telegram const telegramUser = getTelegramUser() // Если нет Telegram Web App API, показываем Login Widget if (!telegramUser) { setShowLogin(true) setLoading(false) return } // Верифицировать через API const userData = await verifyAuth() setUser(userData) // Обработать параметр start из Telegram (для открытия конкретного поста) const tg = window.Telegram?.WebApp if (tg?.startParam) { // Если startParam начинается с "post_", это ссылка на пост if (tg.startParam.startsWith('post_')) { const postId = tg.startParam.replace('post_', '') // Перенаправить на страницу с конкретным постом window.location.href = `/feed?post=${postId}` } } } catch (err) { console.error('Ошибка инициализации:', err) setError(err.message) } finally { setLoading(false) } } const handleTelegramAuth = async (telegramUser) => { try { setLoading(true) // Отправить данные OAuth на backend const userData = await authWithTelegramOAuth(telegramUser) setUser(userData) setShowLogin(false) } catch (err) { console.error('Ошибка авторизации:', err) setError(err.message || 'Ошибка авторизации через Telegram') } finally { setLoading(false) } } if (loading) { return (
Загрузка...
Ошибка загрузки приложения
{error}