UNPKG

@privy-io/react-auth

Version:

React client for the Privy Auth API

2 lines (1 loc) • 7.42 kB
"use strict";var e=require("react/jsx-runtime"),r=require("@heroicons/react/24/outline/QuestionMarkCircleIcon"),i=require("@heroicons/react/24/outline/ShieldCheckIcon"),o=require("react"),t=require("./Button-Bm_Ft0Dw.js"),n=require("./useActiveWallet-BOX8xCn9.js"),s=require("./ModalHeader-DB7Tbjwz.js"),a=require("./context-DFq1obBO.js"),u=require("./get-is-unified-wallet-D4ouXJpi.js"),l=require("./EnrollTotp-BVeDTQ5J.js"),c=require("./PinInput-DSI6rjOn.js");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("styled-components"),require("zustand"),require("react-device-detect"),require("./prepareFundingModalData-Cnd6rhhJ.js"),require("@privy-io/js-sdk-core"),require("./internal-context-NWsAL807.js"),require("ofetch"),require("eventemitter3"),require("./events-context-Di6--rDg.js"),require("viem"),require("viem/utils"),require("./getPublicClient-CGlodIp_.js"),require("./useWallets-BLFNjTwC.js"),require("@heroicons/react/24/outline/ArrowLeftIcon"),require("@heroicons/react/24/outline/ArrowRightIcon"),require("@heroicons/react/24/outline/XMarkIcon"),require("tinycolor2"),require("@heroicons/react/24/outline/ChevronRightIcon"),require("@heroicons/react/24/outline/DevicePhoneMobileIcon"),require("@heroicons/react/24/outline/FingerPrintIcon"),require("@heroicons/react/24/outline/MinusCircleIcon"),require("@heroicons/react/24/outline/PhoneIcon"),require("./Chip-ChrHHazc.js"),require("./LoadingSkeleton-DoCrfGnl.js"),require("@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon"),require("@heroicons/react/24/outline/ClockIcon"),require("./ErrorScreen-BSjRGrRR.js"),require("lucide-react"),require("./index-NJrQkxJ7.js"),require("uuid"),require("jose"),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("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("./reservoir-CQGyEBb7.js"),require("./ScreenLayout-BeH-Q6N2.js"),require("./Screen-D9Tvi297.js"),require("./index-CRFXS9pP.js"),require("./LinkPasskeyScreen-CUMuhJ2Q.js"),require("./TodoList-Cm_a93ef.js"),require("./CopyToClipboard-fd8Z3kQX.js"),require("./copy-BiZ7dtqy.js"),require("./Layouts-dRL0OSpp.js"),require("./Column-C2bAbJE0.js"),require("./LabelXs-CYMv6rOZ.js"),require("./Subtitle-Dtmrw8l5.js"),require("./Title-C-tHJvrb.js"),require("./shared-BPGwTh8c.js"),require("@heroicons/react/24/solid/ShieldCheckIcon"),require("./QrCode-DsQD8cG6.js"),require("qrcode");var h=/*#__PURE__*/d(r),j=/*#__PURE__*/d(i);const q={component:()=>{let{user:r,ready:i}=u.usePrivyContext(),{data:d,onUserCloseViaDialogOrKeybindRef:q}=u.usePrivyModal(),m=a.useAppConfig(),[y,p]=o.useState(null),[f,v]=o.useState(null),[x,g]=o.useState(null),[M,k]=o.useState(!1),[C,S]=o.useState(!1),[w,b]=o.useState(),I=async()=>{w?F(w):r?await P({user:r}):F(Error("Must be logged in to manage MFA")),setTimeout((()=>{p(null),v(null)}),500)};if(q.current=I,!d?.mfaEnroll)throw Error("Missing modal data for MFA enrollment screen.");let{onFailure:F,onSuccess:P,onBack:T,mfaMethods:E,verify:A,generateTotpSecret:R,enrollTotp:B,unenrollTotp:L,enrollPasskey:W}=d.mfaEnroll,H=r?.mfaMethods.includes("sms"),U=r?.mfaMethods.includes("totp"),D=r?.mfaMethods.includes("passkey"),O=!!r?.phone,$=r?.linkedAccounts.filter((e=>"passkey"===e.type)).map((e=>e.credentialId))??[];function K(){p(null),v(null),b(void 0)}async function Q(e=$){try{b(void 0),S(!0);let r=await W(e);return await P({user:r})}catch(e){b(e)}finally{S(!1),k(!1)}}if(!i||!r||!m)/*#__PURE__*/return e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsx(s.ModalHeader,{onClose:I,backFn:T},"header"),/*#__PURE__*/e.jsx(c.AppLogoContainer,{children:/*#__PURE__*/e.jsx(l.MfaShieldIcon,{})}),/*#__PURE__*/e.jsx(c.Container,{children:/*#__PURE__*/e.jsx(n.Loader,{})}),/*#__PURE__*/e.jsx(s.ModalFooter,{})]});if("sms"===y)return null;if("totp"===y)/*#__PURE__*/return e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsx(s.ModalHeader,{backFn:K,onClose:I},"header"),/*#__PURE__*/e.jsx(c.IconWrapper,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/e.jsx(h.default,{})}),/*#__PURE__*/e.jsx(c.Title,{children:"Remove authenticator app verification?"}),/*#__PURE__*/e.jsxs(c.SubTitle,{children:["MFA adds an extra layer of security to your ",m?.name," account. Make sure you have other methods to secure your account."]}),/*#__PURE__*/e.jsx(c.BottomSection,{children:/*#__PURE__*/e.jsx(t.PrimaryButton,{$warn:!0,onClick:async function(){try{b(void 0),S(!0);let e=await L();return await P({user:e})}catch(e){b(e)}finally{S(!1),p(null)}},loading:C,children:"Remove"})}),/*#__PURE__*/e.jsx(s.ModalFooter,{})]});if("passkey"===y){let r=d.mfaEnroll.shouldUnlinkOnUnenrollMfa??!0;/*#__PURE__*/return e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsx(s.ModalHeader,{backFn:K,onClose:I},"header"),/*#__PURE__*/e.jsx(c.IconWrapper,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/e.jsx(h.default,{})}),/*#__PURE__*/e.jsx(c.Title,{children:"Are you sure you want to remove this passkey?"}),/*#__PURE__*/e.jsx(c.SubTitle,{children:r?"Removing your passkey will remove as both a verification method and a login method.":"Removing your passkey will remove as a verification method."}),/*#__PURE__*/e.jsx(c.BottomSection,{children:/*#__PURE__*/e.jsx(t.PrimaryButton,{$warn:!0,onClick:async function(){try{b(void 0),S(!0);let e=await W([]);return await P({user:e})}catch(e){b(e)}finally{S(!1),p(null)}},loading:C,children:"Remove"})}),/*#__PURE__*/e.jsx(s.ModalFooter,{})]})}return 0!==E.length||H||U||D?"sms"===f?null:"totp"===f&&x?/*#__PURE__*/e.jsx(l.EnrollTotp,{onClose:I,onReset:K,submitEnrollmentWithTotp:e=>async function(e){try{b(void 0),S(!0);let r=await B(e);return await P({user:r})}catch(e){b(e)}finally{S(!1),p(null)}}(e.mfaCode),error:w,totpInfo:{...x,appName:m?.name||"Privy"}}):"passkey"===f?/*#__PURE__*/e.jsx(l.EnrollPasskey,{onReset:K,onClose:I,submitEnrollmentWithPasskey:Q}):/*#__PURE__*/e.jsx(l.EnrollLandingScreen,{showIntro:!0,userMfaMethods:r.mfaMethods,appMfaMethods:m.mfa.methods,userHasAuthSms:O,backFn:T,handleSelectMethod:async function(e){b(void 0);try{await A()}catch(e){return void b(e)}return"totp"===e?(v(e),g(null),void R().then((({totpSecret:e,totpAuthUrl:r})=>{g({authUrl:r,secret:e})})).catch((()=>{g(null),K()}))):"passkey"===e&&1===$.length?await Q():void v(e)},isTotpLoading:"totp"===f&&!x,isPasskeyLoading:M,error:w,onClose:I,setRemovingMfaMethod:async function(e){b(void 0);try{await A()}catch(e){return void b(e)}p(e)}}):/*#__PURE__*/e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsx(s.ModalHeader,{onClose:I,backFn:T},"header"),/*#__PURE__*/e.jsx(c.IconWrapper,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/e.jsx(j.default,{})}),/*#__PURE__*/e.jsx(c.Title,{children:"Add more security"}),/*#__PURE__*/e.jsxs(c.SubTitle,{children:[m?.name," does not have any verification methods enabled."]}),/*#__PURE__*/e.jsx(c.BottomSection,{children:/*#__PURE__*/e.jsx(t.PrimaryButton,{onClick:I,children:"Close"})}),/*#__PURE__*/e.jsx(s.ModalFooter,{})]})}};exports.MfaAuthEnrollmentFlowScreen=q,exports.default=q;