Fix Telegram viewport and SVG avatars
All checks were successful
Build and deploy Flutter Web / build (push) Successful in 2m48s

This commit is contained in:
Ruslan Bakiev
2026-05-13 22:50:51 +07:00
parent d3721e44e7
commit cdf6a43d49
6 changed files with 105 additions and 21 deletions

View File

@@ -5,13 +5,28 @@ import 'package:web/web.dart' as web;
const telegramLoginStorageKey = 'mapflow.telegramLoginData';
const mapflowSessionStorageKey = 'mapflow.sessionToken';
@JS('window.Telegram.WebApp.initData')
external JSString? get _telegramInitData;
@JS('Telegram')
external _Telegram? get _telegram;
extension type _Telegram(JSObject _) implements JSObject {
@JS('WebApp')
external _TelegramWebApp? get webApp;
}
extension type _TelegramWebApp(JSObject _) implements JSObject {
external JSString? get initData;
external void ready();
external void expand();
external bool isVersionAtLeast(String version);
external void disableVerticalSwipes();
}
@JS('JSON.stringify')
external JSString _jsonStringify(JSAny? value);
String telegramInitData() => _telegramInitData?.toDart ?? '';
_TelegramWebApp? get _webApp => _telegram?.webApp;
String telegramInitData() => _webApp?.initData?.toDart ?? '';
String telegramLoginData() =>
web.window.localStorage.getItem(telegramLoginStorageKey) ?? '';
@@ -38,6 +53,19 @@ void clearMapflowSession() {
web.window.localStorage.removeItem(telegramLoginStorageKey);
}
void configureTelegramWebApp() {
final webApp = _webApp;
if (webApp == null) {
return;
}
webApp.ready();
webApp.expand();
if (webApp.isVersionAtLeast('7.7')) {
webApp.disableVerticalSwipes();
}
}
void openExternalUrl(String url) {
web.window.location.assign(url);
}