@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 4.27 kB
JavaScript
"use strict";var e=require("react/jsx-runtime"),r=require("@heroicons/react/24/outline/EnvelopeIcon"),i=require("./Layouts-dRL0OSpp.js"),t=require("lucide-react"),a=require("react"),s=require("./context-DFq1obBO.js"),u=require("./index-NJrQkxJ7.js"),o=require("./internal-context-NWsAL807.js"),n=require("./get-is-unified-wallet-D4ouXJpi.js"),l=require("./useActiveWallet-BOX8xCn9.js"),d=require("./Button-Bm_Ft0Dw.js"),c=require("./EmailInputForm-tjrhBacA.js"),q=require("./ErrorMessage-f0cRWc29.js"),m=require("./ScreenLayout-BeH-Q6N2.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("styled-components"),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("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("./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");var h=/*#__PURE__*/p(r);const j=/*#__PURE__*/a.forwardRef(((r,i)=>{let[c,m]=a.useState(""),[p,h]=a.useState(""),[j,g]=a.useState(!1),{authenticated:x,user:w}=n.usePrivyContext(),{initUpdateEmail:S}=o.usePrivyInternal(),{navigate:f,setModalData:b,currentScreen:E}=n.usePrivyModal(),{enabled:k,token:C}=u.useCaptcha(),A=s.useAppConfig(),M=l.validateEmail(c)&&(A.disablePlusEmails&&c.includes("+")?(p||h("Please enter a valid email address without a '+'."),!1):(p&&h(""),!0)),P=j||!M,I=()=>{!k||C||x?(async e=>{if(!w?.email)throw Error("User is required to have an email address to update it.");g(!0);try{await S({oldAddress:w.email.address,newAddress:c,captchaToken:e}),f("AwaitingPasswordlessCodeScreen")}catch(e){b({errorModalData:{error:e,previousScreen:E||"LandingScreen"}}),f("ErrorScreen")}g(!1)})(C):(b({captchaModalData:{callback:e=>{if(!w?.email)throw Error("User is required to have an email address to update it.");return S({oldAddress:w.email.address,newAddress:c,captchaToken:e})},userIntentRequired:!1,onSuccessNavigateTo:"AwaitingPasswordlessCodeScreen",onErrorNavigateTo:"ErrorScreen"}}),f("CaptchaScreen"))};/*#__PURE__*/return e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsxs(v,{children:[p&&/*#__PURE__*/e.jsx(q.ErrorMessage,{style:{marginTop:"0.25rem",textAlign:"left"},children:p}),/*#__PURE__*/e.jsxs(y,{$error:!!p,children:[/*#__PURE__*/e.jsx(l.LoginMethodIconWrapper,{children:/*#__PURE__*/e.jsx(t.Mail,{})}),/*#__PURE__*/e.jsx("input",{ref:i,id:"email-input",type:"email",placeholder:"your@email.com",onChange:e=>m(e.target.value),onKeyUp:e=>{"Enter"===e.key&&I()},value:c,autoComplete:"email"}),r.stacked?null:/*#__PURE__*/e.jsx(d.EmbeddedButton,{isSubmitting:j,onClick:I,disabled:P,children:"Submit"})]})]}),r.stacked?/*#__PURE__*/e.jsx(d.PrimaryButton,{loadingText:null,loading:j,disabled:P,onClick:I,style:{width:"100%"},children:"Submit"}):null]})}));let v=c.InputContainerForm,y=c.EmailUpdateForm;const g=({title:r="Update your email",subtitle:t="Add the email address you'd like to use going forward. We'll send you a confirmation code"})=>/*#__PURE__*/e.jsx(m.ScreenLayout,{title:r,subtitle:t,icon:h.default,watermark:!0,children:/*#__PURE__*/e.jsx(i.BottomPusherContainer,{children:/*#__PURE__*/e.jsx(j,{stacked:!0})})}),x={component:()=>/*#__PURE__*/e.jsx(g,{})};exports.UpdateEmailScreen=x,exports.UpdateEmailScreenView=g,exports.default=x;