- emailLogin: защита от двойного клика (_loginInProgress) - api(): timeout 20s + cache:'no-store' + redirect:'follow' - tg.js: try/catch вокруг showAlert/showConfirm (WebAppMethodUnsupported fix)
41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
// Telegram WebApp SDK обёртки
|
|
const TG = window.Telegram?.WebApp;
|
|
if (TG) {
|
|
TG.ready();
|
|
TG.expand();
|
|
}
|
|
|
|
window.TG_APP = {
|
|
initData: TG?.initData || '',
|
|
initDataUnsafe: TG?.initDataUnsafe || {},
|
|
user: TG?.initDataUnsafe?.user || null,
|
|
colorScheme: TG?.colorScheme || 'light',
|
|
|
|
isAvailable: !!TG,
|
|
|
|
close: () => TG?.close(),
|
|
sendData: (data) => TG?.sendData(JSON.stringify(data)),
|
|
haptic: (type) => {
|
|
try {
|
|
TG?.HapticFeedback?.impactOccurred(type || 'light');
|
|
} catch (e) {}
|
|
},
|
|
showAlert: (msg) => {
|
|
try {
|
|
if (TG?.showAlert) TG.showAlert(String(msg));
|
|
else alert(String(msg));
|
|
} catch (e) {
|
|
try { alert(String(msg)); } catch {}
|
|
}
|
|
},
|
|
showConfirm: (msg) => {
|
|
try {
|
|
if (TG?.showConfirm) return new Promise((r) => TG.showConfirm(msg, r));
|
|
return Promise.resolve(confirm(String(msg)));
|
|
} catch (e) {
|
|
try { return Promise.resolve(confirm(String(msg))); } catch { return Promise.resolve(false); }
|
|
}
|
|
},
|
|
|
|
theme: () => TG?.themeParams || {},
|
|
}; |