diff --git a/src/Game.js b/src/Game.js index ff12580..42d98bb 100644 --- a/src/Game.js +++ b/src/Game.js @@ -106,6 +106,10 @@ function Game({ avatarUrl, gender }) { const [activeChat, setActiveChat] = useState(null); // Добавьте этот код в начало компонента Game, рядом с другими состояниями const [telegramContacts, setTelegramContacts] = useState([]); + const [tgLoading, setTgLoading] = useState(false); + const [tgError, setTgError] = useState(null); + const [sysTime, setSysTime] = useState(new Date()); + const isPhoneNarrow = true; // экран виртуального телефона — всегда узкий const [isIframeOpen, setIsIframeOpen] = useState(false); const [iframeUrl, setIframeUrl] = useState(''); @@ -188,7 +192,9 @@ function Game({ avatarUrl, gender }) { setAppsHidden(true); setActiveApp(appName); if (appName === "Telegram") { - loadTelegramContacts(); // Загрузка контактов при открытии + setTgError(null); + setTgLoading(true); + loadTelegramContacts().finally(() => setTgLoading(false)); } if (appName === "Chrome") { loadQuestsProgress(); @@ -1322,17 +1328,23 @@ function Game({ avatarUrl, gender }) { async function loadTelegramContacts() { const token = localStorage.getItem('token'); try { + setTgError(null); const res = await fetch('/api/users', { - headers: { Authorization: `Bearer ${token}` } + headers: { Authorization: `Bearer ${token}` }, + credentials: 'include', + cache: 'no-cache' }); if (res.ok) { const data = await res.json(); setTelegramContacts(data); } else { - console.error('Ошибка загрузки контактов Telegram'); + const txt = await res.text().catch(()=> ''); + console.error('Ошибка загрузки контактов Telegram', res.status, txt); + setTgError('Не удалось загрузить контакты'); } } catch (err) { console.error('Ошибка сети:', err); + setTgError('Проблема сети'); } } @@ -5519,127 +5531,69 @@ useEffect(() => { )} {activeApp === "Telegram" && ( -
Нет сообщений
- ) : ( - messages.map((msg) => ( -Нет сообщений
+ ) : ( + messages.map(msg => ( +