123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- 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<PogLoginResp | null> {
- 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<boolean> {
- // await this.mockENV();
- // init();
- return true;
- }
- public async isTG(): Promise<boolean> {
- // 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<boolean> {
- 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;
- }
- }
|