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