TgM.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { init, miniApp, openTelegramLink } from "@telegram-apps/sdk";
  2. import PogHttp, { PogLoginResp } from "../net/PogHttp";
  3. import Utils from "../utils/Utils";
  4. import { Tips } from "./Tips";
  5. import { isTMA } from "@telegram-apps/bridge";
  6. import { retrieveLaunchParams, retrieveRawInitData } from "@telegram-apps/sdk";
  7. import WsM from "../api/WsM";
  8. export default class TgM {
  9. private _shareText: string = `POG ,the powerful platform,has surprise airdrops! 🎁`;
  10. async login(): Promise<PogLoginResp | null> {
  11. // if (Utils.getQueryString("tg") == "1") {
  12. // return await PogHttp.ins.loginByTgParams(
  13. // Utils.getQueryString("initDataRaw"),
  14. // Utils.getQueryString("tgWebAppStartParam")
  15. // );
  16. // }
  17. let launchParams = retrieveLaunchParams();
  18. console.warn("tg launchParams from sdk is :", launchParams);
  19. if (!launchParams) {
  20. return null;
  21. }
  22. let initDataRaw = retrieveRawInitData();
  23. console.warn("tg initDataRaw from sdk is :", initDataRaw);
  24. if (!initDataRaw) {
  25. return null;
  26. }
  27. let tgWebAppStartParam: string = Utils.getQueryString("tgWebAppStartParam");
  28. console.log("tg tgWebAppStartParam is :", tgWebAppStartParam);
  29. let result: PogLoginResp = await PogHttp.ins.loginByTgParams(
  30. initDataRaw,
  31. tgWebAppStartParam
  32. );
  33. return result;
  34. }
  35. private static _ins: TgM = null!;
  36. public static get ins(): TgM {
  37. return (this._ins ??= new TgM());
  38. }
  39. public async init(): Promise<boolean> {
  40. let tgInitResult = init();
  41. return true;
  42. }
  43. public async isTG(): Promise<boolean> {
  44. // if (Utils.getQueryString("tg") == "1") {
  45. // return true;
  46. // }
  47. let isTG = isTMA();
  48. if (isTG) {
  49. await this.init();
  50. console.warn("It's Telegram Mini Apps");
  51. return true;
  52. } else {
  53. console.warn("It's not Telegram Mini Apps");
  54. }
  55. return false;
  56. }
  57. public async shareToTg(shareText: string): Promise<boolean> {
  58. shareText = shareText ? shareText : this._shareText;
  59. let shareLink = "";
  60. // shareLink=Data.user._shareLink
  61. try {
  62. let tgUrl = `https://t.me/share/url?url=${encodeURIComponent(
  63. shareLink
  64. )}&text=${encodeURIComponent(shareText)}`;
  65. this.openTelegramLink(tgUrl);
  66. return true;
  67. } catch (error) {
  68. Tips.show("share failed");
  69. return false;
  70. }
  71. }
  72. public openTelegramLink(url: string, isClose: boolean = false): void {
  73. try {
  74. if (Utils.isNameLink(url, "t.me")) {
  75. // window["Telegram"].WebApp.openTelegramLink(url);
  76. if (openTelegramLink.isAvailable()) {
  77. console.warn("openTelegramLink is available"+url);
  78. openTelegramLink(url);
  79. } else {
  80. window.open(url, "_blank");
  81. }
  82. // if (isClose) {
  83. // setTimeout(() => {
  84. // window["Telegram"].WebApp.close();
  85. // }, 1500);
  86. // }
  87. } else {
  88. window.open(url, "_blank");
  89. }
  90. } catch (error) {
  91. window.open(url, "_blank");
  92. }
  93. }
  94. }