'use client'; import { useEffect, useState } from 'react'; import { isDemoMode, getDemoWebApp } from '../utils/demo'; export type WebApp = { initData: string; initDataUnsafe: { query_id: string; user: { id: string; first_name: string; username?: string; language_code: string; }; auth_date: number; hash: string; }; platform: string; colorScheme: string; themeParams: { bg_color: string; text_color: string; hint_color: string; link_color: string; button_color: string; button_text_color: string; }; isExpanded: boolean; viewportHeight: number; viewportStableHeight: number; headerColor: string; backgroundColor: string; ready: () => void; expand: () => void; close: () => void; }; export function useTelegramWebApp() { const [webApp, setWebApp] = useState(null); const [error, setError] = useState(null); const [isInitialized, setIsInitialized] = useState(false); useEffect(() => { const initWebApp = async () => { try { if (isDemoMode()) { const demoWebApp = getDemoWebApp(); setWebApp(demoWebApp); setIsInitialized(true); return; } if (typeof window !== 'undefined') { const WebAppModule = await import('@twa-dev/sdk'); if (WebAppModule.default) { setWebApp(WebAppModule.default); setIsInitialized(true); } else { throw new Error('WebApp не найден'); } } } catch (err) { console.error('WebApp initialization error:', err); setError('Ошибка инициализации Telegram Web App'); } }; if (!isInitialized) { initWebApp(); } }, [isInitialized]); return { webApp, error, isInitialized }; }