tg fixes
This commit is contained in:
parent
33248392ff
commit
65a143ef4d
@ -48,7 +48,7 @@ export default function MainApp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Авторизация пользователя
|
// Авторизация пользователя
|
||||||
const { user: telegramUser } = webApp.initDataUnsafe;
|
const telegramUser = webApp.initDataUnsafe?.user;
|
||||||
if (!telegramUser) {
|
if (!telegramUser) {
|
||||||
throw new Error('Пользователь не найден');
|
throw new Error('Пользователь не найден');
|
||||||
}
|
}
|
||||||
@ -65,7 +65,7 @@ export default function MainApp() {
|
|||||||
setShopItems(shopData);
|
setShopItems(shopData);
|
||||||
|
|
||||||
// Сообщаем Telegram, что приложение готово
|
// Сообщаем Telegram, что приложение готово
|
||||||
webApp.ready();
|
webApp.ready?.();
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('Initialization error:', error);
|
console.error('Initialization error:', error);
|
||||||
toast({
|
toast({
|
||||||
|
@ -4,6 +4,14 @@ import { useEffect, useState } from 'react';
|
|||||||
import { isDemoMode, getDemoWebApp } from '../utils/demo';
|
import { isDemoMode, getDemoWebApp } from '../utils/demo';
|
||||||
import type { WebApp } from '@twa-dev/types';
|
import type { WebApp } from '@twa-dev/types';
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
Telegram?: {
|
||||||
|
WebApp?: WebApp;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type SafeWebApp = Partial<Pick<WebApp,
|
type SafeWebApp = Partial<Pick<WebApp,
|
||||||
| 'initData'
|
| 'initData'
|
||||||
| 'initDataUnsafe'
|
| 'initDataUnsafe'
|
||||||
@ -43,14 +51,27 @@ export function useTelegramWebApp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
const WebAppModule = await import('@twa-dev/sdk');
|
// Проверяем наличие Telegram WebApp в глобальном объекте
|
||||||
|
if (window.Telegram?.WebApp) {
|
||||||
if (isMounted) {
|
if (isMounted) {
|
||||||
if (WebAppModule.default) {
|
setWebApp(window.Telegram.WebApp as SafeWebApp);
|
||||||
|
setIsInitialized(true);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Если WebApp не найден в глобальном объекте, пробуем импортировать SDK
|
||||||
|
const WebAppModule = await import('@twa-dev/sdk');
|
||||||
|
if (isMounted && WebAppModule.default) {
|
||||||
setWebApp(WebAppModule.default as SafeWebApp);
|
setWebApp(WebAppModule.default as SafeWebApp);
|
||||||
setIsInitialized(true);
|
setIsInitialized(true);
|
||||||
} else {
|
} else {
|
||||||
throw new Error('WebApp не найден');
|
throw new Error('WebApp не найден');
|
||||||
}
|
}
|
||||||
|
} catch (importError) {
|
||||||
|
console.error('SDK import error:', importError);
|
||||||
|
throw new Error('Ошибка импорта Telegram Web App SDK');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -8,7 +8,9 @@ const demoUser: WebAppUser = {
|
|||||||
first_name: 'Demo',
|
first_name: 'Demo',
|
||||||
username: 'demo_user',
|
username: 'demo_user',
|
||||||
language_code: 'ru',
|
language_code: 'ru',
|
||||||
is_premium: false
|
is_premium: false,
|
||||||
|
last_name: '',
|
||||||
|
photo_url: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
const demoInitData: WebAppInitData = {
|
const demoInitData: WebAppInitData = {
|
||||||
@ -46,7 +48,7 @@ type SafeWebApp = Pick<WebApp,
|
|||||||
>;
|
>;
|
||||||
|
|
||||||
export const getDemoWebApp = (): SafeWebApp => ({
|
export const getDemoWebApp = (): SafeWebApp => ({
|
||||||
initData: 'demo_mode',
|
initData: JSON.stringify(demoInitData),
|
||||||
initDataUnsafe: demoInitData,
|
initDataUnsafe: demoInitData,
|
||||||
platform: 'WEBVIEW' as Platforms,
|
platform: 'WEBVIEW' as Platforms,
|
||||||
colorScheme: 'light',
|
colorScheme: 'light',
|
||||||
|
Loading…
Reference in New Issue
Block a user