@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 4.11 kB
JavaScript
import{jsx as e}from"react/jsx-runtime";import{useMemo as o,useState as t,useEffect as r,useRef as i}from"react";import{u as s}from"./context-WTldtXS8.mjs";import{u as m,a as n}from"./get-is-unified-wallet-Boa8DYrQ.mjs";import{V as a,a as c,b as p,t as l}from"./to-ui-error-REESv0kM.mjs";import"@privy-io/js-sdk-core";import"tinycolor2";import"@privy-io/are-addresses-equal";import"./internal-context-Z-fyxadS.mjs";import"ofetch";import"@heroicons/react/24/outline/DevicePhoneMobileIcon";import"@heroicons/react/24/outline/FingerPrintIcon";import"@heroicons/react/24/outline/PhoneIcon";import"@heroicons/react/24/outline/ShieldCheckIcon";import"./ModalHeader-D8-mhjp4.mjs";import"styled-components";import"./useActiveWallet-3RHPIBxJ.mjs";import"zustand";import"react-device-detect";import"./use-export-wallet-CV4p7L0b.mjs";import"eventemitter3";import"viem/utils";import"./useWallets-CR0z5IIt.mjs";import"./events-context-CI0iqAXA.mjs";import"viem";import"./getPublicClient-B4uPLKn-.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"./ScreenLayout-DTmQLGPf.mjs";import"./Screen-Bp-TN9gb.mjs";import"./index-Dq_xe9dz.mjs";import"./PinInput-3SLvbnQa.mjs";import"@heroicons/react/24/outline/CalendarIcon";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"./StackedContainer-B2vaEl56.mjs";import"./useGetTokenPrice-BPBpM07F.mjs";import"./useGetSolPrice-DwwjjGbd.mjs";import"./index-BBRkihRn.mjs";import"uuid";import"jose";import"@coinbase/wallet-sdk";import"@privy-io/ethereum";import"mipd";import"@privy-io/popup";import"./paths-3HW55qZg.mjs";import"./usePrivy-6nkpbErN.mjs";import"@scure/base";import"@headlessui/react";import"@walletconnect/ethereum-provider";import"@privy-io/urls";import"./PrivyPluginContext-2QN2dVUw.mjs";import"./getEmbeddedConnectedWallet-JzK4iD-L.mjs";import"js-cookie";import"./frame-uzTmvtww.mjs";import"@privy-io/routes";import"x402/client";import"@privy-io/api-base";import"viem/accounts";import"./use-sign-with-user-signer-Do5Oi_rb.mjs";import"./TransactionDetails-BurRo8R0.mjs";import"./WalletLink--05Hzo2b.mjs";import"./ethers-D1WT71Ay.mjs";import"./getFormattedUsdFromLamports-B6EqSEho.mjs";import"./transaction-CnfuREWo.mjs";import"./Layouts-BlFm53ED.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";const u={component:()=>{let{user:u}=m(),d=s(),h=o((()=>u?.mfaMethods.filter((e=>"passkey"!==e||!d.globalDisablePasskeys))??[]),[u?.mfaMethods,d.globalDisablePasskeys]),{data:f}=n(),[j,y]=t(h[0]),[v,k]=t(!1),[g,w]=t(),[b,C]=t();if(r((()=>{y(h[0])}),[h]),!f?.mfaVerify)throw Error("Missing modal data for MFA verification screen.");let{onFailure:M,onSuccess:P,generateOptions:S,verifyTotpCode:I,verifyPasskey:x,verifySmsCode:A,sendSmsCode:E}=f.mfaVerify,F=async e=>{if("passkey"!==e)try{y(e),"sms"===e&&(y(e),await E()),"totp"===e&&y(e)}catch(e){console.error(e)}else try{y(e);let o=await S();if(!o)throw Error("something went wrong");w(o),await x(o),k(!0),C(void 0),P()}catch(e){C(l(e))}},B=async e=>{C(void 0);try{if(!e||!j)return;if("passkey"===j){if(!g)throw Error("Missing passkey challenge");await x(g)}else"sms"===j?await A(e):"totp"===j&&await I(e);C(void 0),k(!0),P()}catch(e){throw l(e).error}},L=()=>{b||!v?M(b?.error??Error("Canceled MFA verification.")):P()},D=i(!1);return r((()=>{!D.current&&j&&(D.current=!0,F(j).finally((()=>{D.current=!1})))}),[open]),u?"passkey"===j?/*#__PURE__*/e(a,{account:u.linkedAccounts.filter((e=>"passkey"===e.type&&e.enrolledInMfa)).sort(((e,o)=>o.firstVerifiedAt.valueOf()-e.firstVerifiedAt.valueOf()))[0],submitSuccess:v,hasBlockingError:b?.isBlocking??!1,error:b?.error,onClose:L,onBack:()=>{y(void 0),C(void 0)},handleSubmit:()=>B(g).catch(C)}):"sms"===j||"totp"===j?/*#__PURE__*/e(c,{selectedMethod:j,submitSuccess:v,hasBlockingError:b?.isBlocking??!1,handleSubmitCode:B,onClose:L,onBack:h.length>1?()=>y(void 0):void 0}):/*#__PURE__*/e(p,{mfaMethods:h,onSelect:F,handleClose:L}):null}};export{u as MfaAuthVerifyFlowScreen,u as default};