// Утилиты для работы с Telegram Web App let tg = null export const initTelegramApp = () => { if (typeof window !== 'undefined' && window.Telegram?.WebApp) { tg = window.Telegram.WebApp tg.ready() tg.expand() // Установить цвета темы tg.setHeaderColor('#F2F3F5') tg.setBackgroundColor('#F2F3F5') return tg } return null } export const getTelegramApp = () => { return tg || window.Telegram?.WebApp } export const getTelegramUser = () => { const app = getTelegramApp() return app?.initDataUnsafe?.user || null } export const getTelegramInitData = () => { const app = getTelegramApp() return app?.initData || '' } export const showAlert = (message) => { const app = getTelegramApp() if (app) { app.showAlert(message) } else { alert(message) } } export const showConfirm = (message) => { const app = getTelegramApp() return new Promise((resolve) => { if (app) { app.showConfirm(message, resolve) } else { resolve(confirm(message)) } }) } export const showPopup = (params) => { const app = getTelegramApp() return new Promise((resolve) => { if (app) { app.showPopup(params, resolve) } else { alert(params.message) resolve() } }) } export const openTelegramLink = (url) => { const app = getTelegramApp() if (app) { app.openTelegramLink(url) } else { window.open(url, '_blank') } } export const openLink = (url) => { const app = getTelegramApp() if (app) { app.openLink(url) } else { window.open(url, '_blank') } } export const hapticFeedback = (type = 'light') => { const app = getTelegramApp() if (app?.HapticFeedback) { switch (type) { case 'light': app.HapticFeedback.impactOccurred('light') break case 'medium': app.HapticFeedback.impactOccurred('medium') break case 'heavy': app.HapticFeedback.impactOccurred('heavy') break case 'success': app.HapticFeedback.notificationOccurred('success') break case 'warning': app.HapticFeedback.notificationOccurred('warning') break case 'error': app.HapticFeedback.notificationOccurred('error') break default: app.HapticFeedback.impactOccurred('light') } } } // Для разработки: мок данные если не в Telegram export const getMockUser = () => { // Генерируем случайные данные для тестирования const randomId = Math.floor(Math.random() * 1000000000) return { id: randomId, first_name: 'Dev', last_name: 'User', username: `dev_user_${randomId}`, photo_url: `https://api.dicebear.com/7.x/avataaars/svg?seed=${randomId}` // Генератор аватаров } } export const isDevelopment = () => { return !window.Telegram?.WebApp?.initDataUnsafe?.user }