'use client'; import { useEffect, useState } from 'react'; import { isDemoMode, getDemoWebApp } from '../utils/demo'; import type { WebApp } from '@twa-dev/types'; type SafeWebApp = Partial>; export function useTelegramWebApp() { const [webApp, setWebApp] = useState(null); const [error, setError] = useState(null); const [isInitialized, setIsInitialized] = useState(false); useEffect(() => { let isMounted = true; const initWebApp = async () => { try { if (isDemoMode()) { if (isMounted) { const demoWebApp = getDemoWebApp(); setWebApp(demoWebApp); setIsInitialized(true); } return; } if (typeof window !== 'undefined') { const WebAppModule = await import('@twa-dev/sdk'); if (isMounted) { if (WebAppModule.default) { setWebApp(WebAppModule.default as SafeWebApp); setIsInitialized(true); } else { throw new Error('WebApp не найден'); } } } } catch (err) { console.error('WebApp initialization error:', err); if (isMounted) { setError('Ошибка инициализации Telegram Web App'); } } }; if (!isInitialized) { initWebApp(); } return () => { isMounted = false; }; }, [isInitialized]); return { webApp, error, isInitialized }; }