import PogHttp, { PogLoginResp } from "../net/PogHttp"; import Utils from "../utils/Utils"; import { Tips } from "./Tips"; import { isTMA } from "@telegram-apps/bridge"; import { emitEvent, mockTelegramEnv, retrieveLaunchParams, } from "@telegram-apps/bridge"; export default class TgM { private _shareText: string = `POG ,the powerful platform,has surprise airdrops! 🎁`; async login(): Promise { let launchParams = retrieveLaunchParams(); console.log("tg launchParams is :", launchParams); if (!launchParams) { return null; } let initDataRaw: string = launchParams.initDataRaw as string; console.log("tg initDataRaw is :", initDataRaw); if (!initDataRaw) { return null; } let tgWebAppStartParam: string = Utils.getQueryString("tgWebAppStartParam"); console.log("tg tgWebAppStartParam is :", tgWebAppStartParam); let result = await PogHttp.ins.loginByTgParams( initDataRaw, tgWebAppStartParam ); return result; } private static _ins: TgM = null!; public static get ins(): TgM { return this._ins || new TgM(); } public async init(): Promise { // await this.mockENV(); // init(); return true; } public async isTG(): Promise { // if (Utils.getQueryString("bosi") == "123") { // return true; // } if (await isTMA()) { console.warn("It's Telegram Mini Apps"); return true; } else { console.warn("It's not Telegram Mini Apps"); } return false; } public async shareToTg(shareText: string): Promise { shareText = shareText ? shareText : this._shareText; let shareLink = ""; // shareLink=Data.user._shareLink try { let tgUrl = `https://t.me/share/url?url=${encodeURIComponent( shareLink )}&text=${encodeURIComponent(shareText)}`; this.openTelegramLink(tgUrl); return true; } catch (error) { Tips.show("share failed"); return false; } } public openTelegramLink(url: string, isClose: boolean = false): void { try { if (Utils.isNameLink(url, "t.me")) { window["Telegram"].WebApp.openTelegramLink(url); if (isClose) { setTimeout(() => { window["Telegram"].WebApp.close(); }, 1500); } } else { window.open(url, "_blank"); } } catch (error) { window.open(url, "_blank"); } } public async mockENV() { const noInsets = { left: 0, top: 0, bottom: 0, right: 0, } as const; const themeParams = { accent_text_color: "#6ab2f2", bg_color: "#17212b", button_color: "#5288c1", button_text_color: "#ffffff", destructive_text_color: "#ec3942", header_bg_color: "#17212b", hint_color: "#708499", link_color: "#6ab3f3", secondary_bg_color: "#232e3c", section_bg_color: "#17212b", section_header_text_color: "#6ab3f3", subtitle_text_color: "#708499", text_color: "#f5f5f5", } as const; mockTelegramEnv({ launchParams: { tgWebAppThemeParams: themeParams, tgWebAppData: new URLSearchParams([ [ "user", JSON.stringify({ id: 1, first_name: "Pavel", }), ], ["hash", ""], ["signature", ""], ["auth_date", Date.now().toString()], ]), tgWebAppStartParam: "debug", tgWebAppVersion: "8", tgWebAppPlatform: "tdesktop", }, onEvent(e) { if (e[0] === "web_app_request_theme") { return emitEvent("theme_changed", { theme_params: themeParams }); } if (e[0] === "web_app_request_viewport") { return emitEvent("viewport_changed", { height: window.innerHeight, width: window.innerWidth, is_expanded: true, is_state_stable: true, }); } if (e[0] === "web_app_request_content_safe_area") { return emitEvent("content_safe_area_changed", noInsets); } if (e[0] === "web_app_request_safe_area") { return emitEvent("safe_area_changed", noInsets); } }, }); return true; } }