@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 4.44 kB
JavaScript
"use strict";var e=require("react/jsx-runtime"),r=require("lucide-react"),t=require("react"),i=require("./index-C8lpxYDX.js"),o=require("./internal-context-BJv4f_bO.js"),a=require("./get-is-unified-wallet-UpdjHxOV.js"),n=require("./ScreenLayout-CMb-Fua0.js");require("@privy-io/js-sdk-core"),require("uuid"),require("jose"),require("eventemitter3"),require("./useActiveWallet-Cn6zOXx5.js"),require("zustand"),require("./context-D-ZJYjUg.js"),require("tinycolor2"),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("./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 s=({connectionFailed:t,onClose:i})=>t?/*#__PURE__*/e.jsx(n.ScreenLayout,{title:"Something went wrong",subtitle:"We're on it. Please try again later.",icon:r.XCircle,iconVariant:"error",primaryCta:{label:"Close",onClick:i},watermark:!0}):/*#__PURE__*/e.jsx(n.ScreenLayout,{title:"Connecting to your wallet",subtitle:"Please wait...",iconVariant:"loading",showClose:!0,onClose:i,watermark:!1}),l={component:()=>{let{authenticated:r,user:n}=a.usePrivyContext(),{client:l,closePrivyModal:c,createAnalyticsEvent:u,walletProxy:d}=o.usePrivyInternal(),{navigate:y,data:v,setModalData:q,onUserCloseViaDialogOrKeybindRef:p}=a.usePrivyModal(),h=t.useMemo((()=>Date.now()),[]),[w,m]=t.useState(!1),{onCompleteNavigateTo:b,onFailure:f,shouldForceMFA:j,entropyId:C,entropyIdVerifier:g,recoveryMethod:I,connectingWalletAddress:x,isUnifiedWallet:A=!1}=v?.connectWallet,P=e=>{w||(m(!0),f("string"==typeof e?Error(e):e))};return t.useEffect((()=>{let e;return r?d?((async()=>{let r=await l.getAccessToken();if(!r)return P("User must be authenticated and have a Privy wallet before it can be connected");try{if(!A){if(!C||!g)return P("For on-device first-class chain wallets, entropyId and entropyIdVerifier are required");await d.connect({accessToken:r,entropyId:C,entropyIdVerifier:g})}j&&await d.verifyMfa({accessToken:r});let t=(Date.now()-h)/1e3;"EmbeddedWalletKeyExportScreen"===b&&t<1?e=setTimeout((()=>{y(b,!1)}),1e3*(1-t)):y(b,!1)}catch(e){if(i.errorIndicatesRecoveryIsNeeded(e)&&"privy"===I){let e=await l.getAccessToken();if(!e)return P("User must be authenticated and have a Privy wallet before it can be recovered");try{u({eventName:"embedded_wallet_pinless_recovery_started",payload:{walletAddress:x}});let r=await(d?.recover({accessToken:e,entropyId:C,entropyIdVerifier:g}));r?.entropyId||P(Error("Unable to recover wallet")),b?y(b):c({shouldCallAuthOnSuccess:!1}),u({eventName:"embedded_wallet_recovery_completed",payload:{walletAddress:x}}),y(b)}catch(e){P("An error has occurred, please try again.")}}else i.errorIndicatesRecoveryIsNeeded(e)&&"privy"!==I&&"privy-v2"!==I?(q({...v,recoverWallet:{entropyId:C,entropyIdVerifier:g,onCompleteNavigateTo:b,onFailure:f},recoveryOAuthStatus:{provider:I,action:"recover",isInAccountCreateFlow:!1,shouldCreateEth:!1,shouldCreateSol:!1}}),y(i.embeddedWalletRecoveryScreen(I))):P(e)}})(),()=>clearTimeout(e)):void 0:P("User must be authenticated and have a Privy wallet before it can be connected")}),[r,n,d]),p.current=()=>{P("User exited before wallet could be connected"),c({shouldCallAuthOnSuccess:!1})},/*#__PURE__*/e.jsx(s,{connectionFailed:w,onClose:()=>c({shouldCallAuthOnSuccess:!1})})}};exports.EmbeddedWalletConnectingScreen=l,exports.EmbeddedWalletConnectingView=s,exports.default=l;