UNPKG

next-twa

Version:
2 lines (1 loc) 1.46 kB
import n,{createContext as r,useState as a,useEffect as i,useContext as t}from"react";import{usePathname as e,useRouter as o}from"next/navigation";var u=function(){var n;return"undefined"!=typeof window?null==(n=window)||null==(n=n.Telegram)?void 0:n.WebApp:void 0},l=r({isReady:!1}),f=function(r){var t=r.children,f=r.onStartApp,c=r.useBackButton,v=void 0===c||c,s=e(),d=o(),p=a(),h=p[0],m=p[1],w=a({finished:!1,value:null}),y=w[0],b=w[1];return i(function(){if(!h){var n=u();console.log("twa - ",n),m(n),b({finished:!0,value:f?f(null==n?void 0:n.initDataUnsafe.start_param):null}),null!=n&&n.ready&&n.ready()}},[]),i(function(){if(h&&v){var n=h.BackButton;if("/"!==s){var r=function(){d.back()};return n.show(),n.onClick(r),function(){n.offClick(r)}}n.hide()}},[s,h]),n.createElement(l.Provider,{value:{app:h,startAppValue:y.value,isReady:!(null==h||!h.version)&&y.finished}},t)},c=function(){return t(l)};function v(){return v=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var a=arguments[r];for(var i in a)({}).hasOwnProperty.call(a,i)&&(n[i]=a[i])}return n},v.apply(null,arguments)}var s=function(){var n=a(null),r=n[0],t=n[1];return i(function(){var n=u();if(n){var r=Object.fromEntries(new URLSearchParams(n.initData)),a={};for(var i in r)try{a[i]=JSON.parse(r[i])}catch(n){var e;a[i]=null!=(e=r[i])?e:""}t(v({},n.initDataUnsafe,a))}},[]),r};export{f as NextTWAProvider,c as useNextTWA,s as useTelegramInitData};