feat: migrate to @tma.js/sdk-react for Telegram Mini App

- Add useTelegramSDK hook with reactive signals for viewport, safe area, fullscreen
- Migrate TelegramAdapter to use SDK components (backButton, mainButton, hapticFeedback, cloudStorage, themeParams, popup)
- Update Login, TelegramRedirect to use SDK helpers
- Update PlatformProvider, api/client to use centralized SDK functions
- Simplify useTelegramWebApp as backward-compatible wrapper
- Add automatic CSS variable binding for theme and viewport
This commit is contained in:
c0mrade
2026-02-01 20:13:50 +03:00
parent 55ae55f4af
commit edb5be09ae
14 changed files with 736 additions and 513 deletions

View File

@@ -2,6 +2,7 @@ import { useMemo, type ReactNode } from 'react';
import { PlatformContext } from '@/platform/PlatformContext';
import { createTelegramAdapter } from '@/platform/adapters/TelegramAdapter';
import { createWebAdapter } from '@/platform/adapters/WebAdapter';
import { isInTelegramWebApp } from '@/hooks/useTelegramSDK';
import type { PlatformContext as PlatformContextType } from '@/platform/types';
interface PlatformProviderProps {
@@ -9,16 +10,7 @@ interface PlatformProviderProps {
}
function detectPlatform(): 'telegram' | 'web' {
// Check if Telegram WebApp is available and actually initialized with data
// initData is an empty string when not in real Telegram context
if (
typeof window !== 'undefined' &&
window.Telegram?.WebApp?.initData &&
window.Telegram.WebApp.initData.length > 0
) {
return 'telegram';
}
return 'web';
return isInTelegramWebApp() ? 'telegram' : 'web';
}
function createAdapter(): PlatformContextType {