TGHelper.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const tgInfo={
  2. isInit:false,
  3. }
  4. const checkLoadTelegramJs=async ()=>{
  5. if (tgInfo.isInit)return true;
  6. let isInTG=window.location.hash.indexOf("tgWebAppData") !== -1;
  7. if (!isInTG)return false;
  8. return new Promise( (t, n) => {
  9. var q = document.createElement("script");
  10. q.type = "text/javascript";
  11. q.src = "https://telegram.org/js/telegram-web-app.js?56";
  12. document.body.appendChild(q);
  13. const r = setTimeout( () => {
  14. q.onerror = null;
  15. q.onload = null;
  16. t(false);
  17. }, 10000);
  18. q.onload = () => {
  19. clearTimeout(r);
  20. console.log("finish telegram js");
  21. tgInfo.isInit=true;
  22. t(true);
  23. };
  24. q.onerror = () => {
  25. clearTimeout(r);
  26. q.onerror = null;
  27. q.onload = null;
  28. n(false)
  29. }
  30. });
  31. }
  32. const init=async ()=>{
  33. return await checkLoadTelegramJs();
  34. }
  35. const getTGWebApp=()=>{
  36. let Telegram=window.Telegram;
  37. if (Telegram){
  38. return Telegram.WebApp;
  39. }
  40. return null;
  41. }
  42. const getInitData=()=>{
  43. //window.Telegram.WebApp.initData
  44. let webApp=getTGWebApp();
  45. if (webApp)return webApp.initData;
  46. return "";
  47. }
  48. const getTGUser=()=>{
  49. let webApp=getTGWebApp();
  50. if (webApp){
  51. let initDataUnsafe=webApp.initDataUnsafe;
  52. if (initDataUnsafe){
  53. return initDataUnsafe.user;
  54. }
  55. }
  56. return null;
  57. }
  58. const TGHelper={
  59. init,
  60. getTGWebApp,
  61. getInitData,
  62. getTGUser
  63. }
  64. export default TGHelper;