const telegramFrameId = 'telegram-login-frame'; const telegramPageSrc = 'telegram/telegram-login.html'; function showTelegramLogin(botName) { const miniAppInitData = Telegram.WebApp.initData; const hasBotName = botName && botName.length > 0; if (!hasBotName && !miniAppInitData) { telegramLoginError('Telegram.MiniApp.NotInitialized'); return; } if(miniAppInitData) { loginWithTelegramWebApp(miniAppInitData); return } // Create the overlay div if (document.getElementById(telegramFrameId)) { hideTelegramLogin(); } if(!hasBotName) { telegramLoginError('Telegram.LoginWidget.BotId'); return; } var overlay = document.createElement('div'); overlay.id = telegramFrameId; overlay.style.display = 'flex'; overlay.style.position = 'fixed'; overlay.style.top = '0'; overlay.style.left = '0'; overlay.style.width = '100%'; overlay.style.height = '100%'; overlay.style.background = 'rgba(0, 0, 0, 0.5)'; overlay.style.zIndex = '9999'; overlay.style.justifyContent = 'center'; overlay.style.alignItems = 'center'; // Create the iframe var iframe = document.createElement('iframe'); iframe.id = 'popupIframe'; iframe.style.width = '100%'; iframe.style.height = '100%'; iframe.style.border = 'none'; iframe.style.borderRadius = '8px'; iframe.style.boxShadow = '0 0 20px rgba(0, 0, 0, 0.5)'; // Set the iframe source with query parameters iframe.src = `${telegramPageSrc}?botName=${encodeURIComponent(botName)}`; // Append the iframe to the overlay overlay.appendChild(iframe); // Append the overlay to the body document.body.appendChild(overlay); } function loginWithTelegramWebApp(initData){ const params = new URLSearchParams(initData); postMessage({ eventType: 'telegramAuth',authData: params.toString() }); } function telegramLoginError(error){ postMessage({ eventType: 'telegramError', errorData: error }); } function userCancelledTelegramLogin(){ postMessage({ eventType: 'telegramError', errorData: 'Telegram.LoginWidget.Canceled' }); hideTelegramLogin(); } // Function to hide and destroy the Telegram login popup function hideTelegramLogin() { var overlay = document.getElementById(telegramFrameId); if (overlay) { document.body.removeChild(overlay); } }