UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) 5.12 kB
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("./index-C8lpxYDX.js"),i=require("./context-D-ZJYjUg.js"),a=require("./internal-context-BJv4f_bO.js"),o=require("./get-is-unified-wallet-UpdjHxOV.js"),s=require("./shouldProceedtoEmbeddedWalletCreationFlow-DADJI9f0.js"),u=require("./ScreenLayout-CMb-Fua0.js"),n=require("./telegram-D3O0_F1a.js");require("@privy-io/js-sdk-core"),require("uuid"),require("jose"),require("eventemitter3"),require("./useActiveWallet-Cn6zOXx5.js"),require("zustand"),require("styled-components"),require("react-device-detect"),require("./use-export-wallet-B5ujV5Nk.js"),require("viem/utils"),require("./useWallets-CKAypPZB.js"),require("./events-context-Di6--rDg.js"),require("viem"),require("./getPublicClient-BsmZyCGX.js"),require("@coinbase/wallet-sdk"),require("@privy-io/ethereum"),require("mipd"),require("@privy-io/popup"),require("./paths-DizMb-lU.js"),require("./usePrivy-cfS6o4tX.js"),require("@scure/base"),require("@headlessui/react"),require("@walletconnect/ethereum-provider"),require("@privy-io/urls"),require("./PrivyPluginContext-DsgaS6n9.js"),require("./getEmbeddedConnectedWallet-pJd-l936.js"),require("ofetch"),require("js-cookie"),require("./frame-Oz7volks.js"),require("@privy-io/routes"),require("x402/client"),require("@privy-io/api-base"),require("@privy-io/are-addresses-equal"),require("viem/accounts"),require("./use-sign-with-user-signer-Cu_6Bx7m.js"),require("tinycolor2"),require("./ModalHeader-BCPQgekO.js"),require("@heroicons/react/24/outline/ArrowLeftIcon"),require("@heroicons/react/24/outline/ArrowRightIcon"),require("@heroicons/react/24/outline/QuestionMarkCircleIcon"),require("@heroicons/react/24/outline/XMarkIcon"),require("./Screen-BfKedqka.js"),require("./index-ByFhjjzH.js");const l=({success:r,errorMessage:t,onRetry:i})=>{let a=r?"Successfully connected with Telegram":t?t.message:"Verifying connection to Telegram";/*#__PURE__*/return e.jsx(u.ScreenLayout,{title:a,subtitle:r?"You're good to go!":t?t.detail:"Just a few moments more",icon:n.Telegram,iconVariant:"loading",iconLoadingStatus:{success:r,fail:!!t},secondaryCta:t?.retryable&&i?{label:"Retry",onClick:i}:void 0,watermark:!0})},c={component:()=>{let{authenticated:u,logout:n,ready:c,user:d}=o.usePrivyContext(),{setModalData:m,navigate:q,resetNavigation:g,data:v}=o.usePrivyModal(),y=i.useAppConfig(),{initLoginWithTelegram:h,loginWithTelegram:E,updateWallets:S,setReadyToTrue:p,closePrivyModal:A,createAnalyticsEvent:C,getAuthMeta:T}=a.usePrivyInternal(),[f,j]=r.useState(!1),[R,b]=r.useState(void 0),w=t.useCaptcha();async function _(){try{let e=await async function(){let e;if(!u){if(w.enabled&&"error"===w.status)throw new t.CaptchaError(w.error,null,a.PrivyErrorCode.CAPTCHA_FAILURE);return w.enabled&&"success"!==w.status&&(w.execute(),e=await w.waitForResult()),e}}();await E({captchaToken:e}),j(!0),p(!0)}catch(e){if(e?.privyErrorCode===a.PrivyErrorCode.ALLOWLIST_REJECTED)return b(void 0),g(),void q("AllowlistRejectionScreen");if(e?.privyErrorCode===a.PrivyErrorCode.USER_LIMIT_REACHED)return console.error(new a.PrivyUserLimitReachedError(e).toString()),b(void 0),g(),void q("UserLimitReachedScreen");if(e?.privyErrorCode===a.PrivyErrorCode.USER_DOES_NOT_EXIST)return b(void 0),g(),void q("AccountNotFoundScreen");if(e?.privyErrorCode===a.PrivyErrorCode.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return b(void 0),g(),m({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,telegramAuthResult:T()?.telegramAuthResult,telegramWebAppData:T()?.telegramWebAppData,displayName:e.data?.data?.account?.displayName,linkMethod:"telegram",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress}}),void q("LinkConflictScreen");let{retryable:r,detail:i}=t.getTelegramAuthErrorMessage(e);b({retryable:r,detail:i,message:"Authentication failed"})}}r.useEffect((()=>{_()}),[]),r.useEffect((()=>{if(!(c&&u&&f&&d))return;if(y?.legal.requireUsersAcceptTerms&&!d.hasAcceptedTerms){let e=setTimeout((()=>{q("AffirmativeConsentScreen")}),i.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}if(s.shouldProceedtoEmbeddedWalletCreationFlow(d,y.embeddedWallets)){let e=setTimeout((()=>{m({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),C({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,provider:"telegram",screen:"TelegramAuthScreen"}}),n()},callAuthOnSuccessOnClose:!0}}),q("EmbeddedWalletOnAccountCreateScreen")}),i.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}S();let e=setTimeout((()=>A({shouldCallAuthOnSuccess:!0,isSuccess:!0})),i.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}),[c,u,f,d]);/*#__PURE__*/return e.jsx(l,{success:f,errorMessage:R,onRetry:R?.retryable?async()=>{try{b(void 0),v?.telegramAuthModalData?.seamlessAuth||await h(void 0,v?.login?.disableSignup),await _()}catch(e){let{retryable:r,detail:i}=t.getTelegramAuthErrorMessage(e);b({retryable:r,detail:i,message:"Authentication failed"})}}:void 0})},isCaptchaRequired:!0,isShownBeforeReady:!0};exports.TelegramAuthScreen=c,exports.TelegramAuthScreenView=l,exports.default=c;