UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) 4.35 kB
"use strict";var e=require("react/jsx-runtime"),r=require("lucide-react"),t=require("react"),i=require("@privy-io/js-sdk-core"),a=require("./context-Cg3IEi80.js"),l=require("./index-DchMyzt9.js"),s=require("./internal-context-BJv4f_bO.js"),o=require("./privy-context-CrM9_s6G.js"),u=require("./PrivyPluginContext-DsgaS6n9.js"),n=require("./ScreenLayout-C4QHZMbl.js");require("tinycolor2"),require("uuid"),require("jose"),require("eventemitter3"),require("./useActiveWallet-BfMD5hzE.js"),require("zustand"),require("styled-components"),require("react-device-detect"),require("./use-export-wallet-_EIyxyle.js"),require("./useWallets-dikDynAG.js"),require("viem"),require("viem/utils"),require("./events-context-Di6--rDg.js"),require("@coinbase/wallet-sdk"),require("@privy-io/ethereum"),require("mipd"),require("@privy-io/popup"),require("./paths-DizMb-lU.js"),require("./usePrivy-C-Rab7yP.js"),require("@scure/base"),require("@headlessui/react"),require("@walletconnect/ethereum-provider"),require("@privy-io/urls"),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-C5Wuo3-1.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-DWnRbzSA.js"),require("./index-ByFhjjzH.js");const c=({errorMessage:t,onClose:i})=>t?/*#__PURE__*/e.jsx(n.ScreenLayout,{title:"Something went wrong",subtitle:t,icon:r.XCircle,iconVariant:"error",primaryCta:{label:"Close",onClick:i},watermark:!0}):/*#__PURE__*/e.jsx(n.ScreenLayout,{title:"Creating your wallet",subtitle:"Please wait...",iconVariant:"loading",watermark:!1}),d={component:()=>{let{setModalData:r,navigate:n,data:d,onUserCloseViaDialogOrKeybindRef:y}=o.usePrivyModal(),q=a.useAppConfig(),[h,m]=t.useState(""),{embeddedWallets:v}=a.useAppConfig(),{authenticated:w,user:p}=o.usePrivyContext(),{closePrivyModal:C,walletProxy:g,client:b}=s.usePrivyInternal(),{onSuccess:j,onFailure:W,callAuthOnSuccessOnClose:S,shouldCreateEth:x,shouldCreateSol:f}=d.createWallet,E=u.usePlugins(),O=p?E(l.WALLET_CREATION_ON_LOGIN_PLUGIN_ID)?.shouldCreateWallet({user:p}):void 0,A=!!p&&l.shouldCreateEmbeddedEthWallet(p,q.embeddedWallets.ethereum.createOnLogin,O),I=!!p&&l.shouldCreateEmbeddedSolWallet(p,q.embeddedWallets.solana.createOnLogin,O),P="legacy-embedded-wallets-only"===q.embeddedWallets.mode&&!0===q?.embeddedWallets.requireUserOwnedRecoveryOnCreate,[L,k]=t.useState(null),{create:R}=l.useCreateWalletWithoutFallback(),M=x??A,U=f??I,K=new l.RunEffectOnce((async()=>{let e=await b.getAccessToken();if(p&&e&&g)try{let e,r=await i.generateWalletIdempotencyKey(p.id,"ethereum"),t=await i.generateWalletIdempotencyKey(p.id,"solana");if(M&&U)e=await R({chainType:"ethereum",walletIndex:0,latestUser:p,idempotencyKey:r}),e=await R({chainType:"solana",walletIndex:0,latestUser:e.user,idempotencyKey:t});else if(U)e=await R({chainType:"solana",walletIndex:0,latestUser:p,idempotencyKey:t});else{if(!M)return void C({shouldCallAuthOnSuccess:S});e=await R({chainType:"ethereum",walletIndex:0,latestUser:p,idempotencyKey:r})}k(e),n("EmbeddedWalletCreatedScreen")}catch(e){m(e.message)}}));return t.useEffect((()=>w&&p?P?(r({...d,createWallet:{...d.createWallet,shouldCreateEth:M,shouldCreateSol:U},recoverySelection:{...d?.recoverySelection,isInAccountCreateFlow:!0,shouldCreateEth:M,shouldCreateSol:U}}),n(l.toEmbeddedWalletSetRecoveryScreen({walletAction:"create",showAutomaticRecovery:!1,availableRecoveryMethods:v.userOwnedRecoveryOptions,legacySetWalletPasswordFlow:!1,isResettingPassword:!1}))):void K.execute():(n("LandingScreen"),void W(Error("User must be authenticated before creating a Privy wallet")))),[P,w]),y.current=()=>null/*#__PURE__*/,e.jsx(c,{errorMessage:h||void 0,onClose:()=>{L?(j(L),C({shouldCallAuthOnSuccess:S})):(W(new s.PrivyEmbeddedWalletError("User wallet creation failed")),C({shouldCallAuthOnSuccess:!1}))}})}};exports.EmbeddedWalletOnAccountCreateScreen=d,exports.EmbeddedWalletOnAccountCreateView=c,exports.default=d;