Безопасная работа с Telegram Web App SDK Улучшенная обработка ошибок Плавная загрузка с индикаторами Корректная работа в демо-режиме
29 lines
805 B
TypeScript
29 lines
805 B
TypeScript
'use client';
|
|
|
|
import { useEffect, useState } from 'react';
|
|
import { isDemoMode, getDemoWebApp } from '../utils/demo';
|
|
|
|
export function useTelegramWebApp() {
|
|
const [webApp, setWebApp] = useState<any>(null);
|
|
const [error, setError] = useState<string | null>(null);
|
|
|
|
useEffect(() => {
|
|
const initWebApp = async () => {
|
|
try {
|
|
if (isDemoMode()) {
|
|
setWebApp(getDemoWebApp());
|
|
} else if (typeof window !== 'undefined') {
|
|
const WebAppModule = await import('@twa-dev/sdk');
|
|
setWebApp(WebAppModule.default);
|
|
}
|
|
} catch (err) {
|
|
setError('Ошибка инициализации Telegram Web App');
|
|
console.error('WebApp initialization error:', err);
|
|
}
|
|
};
|
|
|
|
initWebApp();
|
|
}, []);
|
|
|
|
return { webApp, error };
|
|
}
|