@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 4.59 kB
JavaScript
;var e=require("react/jsx-runtime"),r=require("react"),t=require("./context-DFq1obBO.js"),i=require("./index-NJrQkxJ7.js"),o=require("./internal-context-NWsAL807.js"),s=require("./get-is-unified-wallet-D4ouXJpi.js"),a=require("./useActiveWallet-BOX8xCn9.js"),u=require("./shouldProceedtoEmbeddedWalletCreationFlow-DZvEYqlO.js"),n=require("./ScreenLayout-BeH-Q6N2.js");require("@privy-io/js-sdk-core"),require("tinycolor2"),require("uuid"),require("jose"),require("eventemitter3"),require("./useWallets-BLFNjTwC.js"),require("./prepareFundingModalData-Cnd6rhhJ.js"),require("@coinbase/wallet-sdk"),require("@privy-io/ethereum"),require("mipd"),require("react-device-detect"),require("viem/utils"),require("@privy-io/popup"),require("./paths-DizMb-lU.js"),require("./usePrivy-CcfSRv1R.js"),require("./events-context-Di6--rDg.js"),require("@scure/base"),require("styled-components"),require("zustand"),require("@headlessui/react"),require("@walletconnect/ethereum-provider"),require("@privy-io/urls"),require("viem"),require("./getPublicClient-CGlodIp_.js"),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("./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 c=({providerApp:t,success:i,error:o,onClose:s})=>{let{title:a,subtitle:u}=r.useMemo((()=>i?{title:`Successfully connected with ${t.name}`,subtitle:"You're good to go!"}:o?{title:"Authentication failed",subtitle:o.message}:{title:`Connecting to ${t.name}`,subtitle:`Please check the pop-up from ${t.name} to continue`}),[i,o,t.name]);/*#__PURE__*/return e.jsx(n.ScreenLayout,{title:a,subtitle:u,icon:t.logoUrl,iconVariant:"loading",iconLoadingStatus:{success:i,fail:!!o},onBack:s,watermark:!0})},l={component:()=>{let n=t.useAppConfig(),{data:l,navigate:d,setModalData:p,onUserCloseViaDialogOrKeybindRef:q}=s.usePrivyModal(),{crossAppAuthFlow:m,updateWallets:h,closePrivyModal:A,createAnalyticsEvent:f}=o.usePrivyInternal(),{logout:v}=a.useLogout(),[C,S]=r.useState({}),y=l?.crossAppAuth;if(!y)return console.debug("Data missing for screen"),null;let E={id:y.appId,name:y.name,logoUrl:y.logoUrl},g=new o.PrivyClientError(`There was an issue connecting your ${E.name} account. Please try again.`),j=new i.RunEffectOnce((async e=>{if(y.popup)try{let r=await m({appId:e,popup:y.popup,action:y.action});S({data:r})}catch(e){if(e instanceof o.PrivyClientError)S({error:e});else if(e instanceof o.PrivyApiError){if(e.privyErrorCode===o.PrivyErrorCode.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return p({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,displayName:e.data?.data?.account?.displayName,linkMethod:`privy:${E.id}`,embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress,oAuthUserInfo:e.data?.data?.otherUser?.oAuthUserInfo}}),void d("LinkConflictScreen");y.popup&&y.popup.close(),S({error:g})}else S({error:g})}else S({error:g})})),U=()=>{C.data&&(h(),y.onSuccess(C.data),A({shouldCallAuthOnSuccess:!0,isSuccess:!0})),y.onError(C.error??new o.PrivyClientError("User canceled flow")),A({shouldCallAuthOnSuccess:!1,isSuccess:!1})};return q.current=U,r.useEffect((()=>{E.id.length&&j.execute(E.id)}),[E.id]),r.useEffect((()=>{if(!C.data)return;let e=C.data;if(n.legal.requireUsersAcceptTerms&&!e.hasAcceptedTerms){let e=setTimeout((()=>{d("AffirmativeConsentScreen")}),t.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}if(u.shouldProceedtoEmbeddedWalletCreationFlow(e,n.embeddedWallets)){let e=setTimeout((()=>{p({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),f({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,provider:`privy:${E.id}`,screen:"CrossAppAuthScreen"}}),v()},callAuthOnSuccessOnClose:!0}}),d("EmbeddedWalletOnAccountCreateScreen")}),t.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}let r=setTimeout(U,t.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(r)}),[C.data]),/*#__PURE__*/e.jsx(c,{providerApp:E,success:!!C.data,error:C.error,onClose:U})},isShownBeforeReady:!0};exports.CrossAppAuthScreen=l,exports.CrossAppAuthScreenView=c,exports.default=l;