@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 5.07 kB
JavaScript
;var e=require("react/jsx-runtime"),r=require("react"),t=require("./index-NJrQkxJ7.js"),i=require("./context-DFq1obBO.js"),a=require("./internal-context-NWsAL807.js"),o=require("./get-is-unified-wallet-D4ouXJpi.js"),s=require("./shouldProceedtoEmbeddedWalletCreationFlow-DZvEYqlO.js"),u=require("./ScreenLayout-BeH-Q6N2.js"),n=require("./telegram-D3O0_F1a.js");require("@privy-io/js-sdk-core"),require("uuid"),require("jose"),require("eventemitter3"),require("./useActiveWallet-BOX8xCn9.js"),require("zustand"),require("styled-components"),require("react-device-detect"),require("./prepareFundingModalData-Cnd6rhhJ.js"),require("./events-context-Di6--rDg.js"),require("viem"),require("viem/utils"),require("./getPublicClient-CGlodIp_.js"),require("./useWallets-BLFNjTwC.js"),require("@coinbase/wallet-sdk"),require("@privy-io/ethereum"),require("mipd"),require("@privy-io/popup"),require("./paths-DizMb-lU.js"),require("./usePrivy-CcfSRv1R.js"),require("@scure/base"),require("@headlessui/react"),require("@walletconnect/ethereum-provider"),require("@privy-io/urls"),require("ofetch"),require("js-cookie"),require("./frame-B14fp9oC.js"),require("@privy-io/routes"),require("x402/client"),require("@privy-io/api-base"),require("viem/accounts"),require("./use-sign-with-user-signer-BcAsQTGF.js"),require("./getEmbeddedConnectedWallet-6TsVZJkD.js"),require("tinycolor2"),require("./Button-Bm_Ft0Dw.js"),require("./Screen-D9Tvi297.js"),require("./ModalHeader-DB7Tbjwz.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("./index-CRFXS9pP.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),_=t.useCaptcha();async function w(){try{let e=await async function(){let e;if(!u){if(_.enabled&&"error"===_.status)throw new t.CaptchaError(_.error,null,a.PrivyErrorCode.CAPTCHA_FAILURE);return _.enabled&&"success"!==_.status&&(_.execute(),e=await _.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((()=>{w()}),[]),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 w()}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;