@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 2.83 kB
JavaScript
"use strict";var e=require("react/jsx-runtime"),r=require("lucide-react"),i=require("react"),t=require("styled-components"),a=require("./context-DFq1obBO.js"),n=require("./internal-context-NWsAL807.js"),l=require("./index-NJrQkxJ7.js"),o=require("./get-is-unified-wallet-D4ouXJpi.js"),s=require("./useActiveWallet-BOX8xCn9.js"),c=require("./Button-Bm_Ft0Dw.js"),d=require("./Chip-ChrHHazc.js"),u=require("./EmailInputForm-tjrhBacA.js"),p=require("./ErrorMessage-f0cRWc29.js");const m=/*#__PURE__*/i.forwardRef(((t,u)=>{let[m,E]=i.useState(t.defaultValue||""),[j,v]=i.useState(""),[S,x]=i.useState(!1),{authenticated:C}=o.usePrivyContext(),{initLoginWithEmail:b}=n.usePrivyInternal(),{navigate:q,setModalData:f,currentScreen:P,data:k}=o.usePrivyModal(),{enabled:w,token:I}=l.useCaptcha(),[M,L]=i.useState(!1),{accountType:A}=s.useRecentlyUsedLogin(),T=a.useAppConfig();i.useEffect((()=>{!m&&T.disablePlusEmails&&k?.inlineError?.error instanceof n.PrivyError&&k?.inlineError?.error.privyErrorCode===n.PrivyErrorCode.DISALLOWED_PLUS_EMAIL&&!j&&v("Please enter a valid email address without a '+'."),j&&v("")}),[m]);let F=s.validateEmail(m),D=S||!F,U=()=>{var e;f({login:k?.login,inlineError:void 0}),!w||I||C?(e=I,x(!0),b({email:m,captchaToken:e,disableSignup:k?.login?.disableSignup,withPrivyUi:!0}).then((()=>{q("AwaitingPasswordlessCodeScreen")})).catch((e=>{f({errorModalData:{error:e,previousScreen:P||"LandingScreen"}}),q("ErrorScreen")})).finally((()=>{x(!1)}))):(f({captchaModalData:{callback:e=>b({email:m,captchaToken:e,withPrivyUi:!0}),userIntentRequired:!1,onSuccessNavigateTo:"AwaitingPasswordlessCodeScreen",onErrorNavigateTo:"ErrorScreen"}}),q("CaptchaScreen"))};/*#__PURE__*/return e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsxs(g,{children:[j&&/*#__PURE__*/e.jsx(p.ErrorMessage,{style:{display:"block",marginTop:"0.25rem",textAlign:"left"},children:j}),/*#__PURE__*/e.jsxs(h,{stacked:t.stacked,$error:!!j,children:[/*#__PURE__*/e.jsx(y,{children:/*#__PURE__*/e.jsx(r.Mail,{})}),/*#__PURE__*/e.jsx("input",{ref:u,id:"email-input",className:"login-method-button",type:"email",placeholder:"your@email.com",onFocus:()=>L(!0),onChange:e=>E(e.target.value),onKeyUp:e=>{"Enter"===e.key&&U()},value:m,autoComplete:"email"}),"email"!==A||M?t.stacked?/*#__PURE__*/e.jsx("span",{}):/*#__PURE__*/e.jsx(c.EmbeddedButton,{isSubmitting:S,onClick:U,disabled:D,children:"Submit"}):/*#__PURE__*/e.jsx(d.Chip,{color:"gray",children:"Recent"})]})]}),t.stacked?/*#__PURE__*/e.jsx(c.PrimaryButton,{loadingText:null,loading:S,disabled:D,onClick:U,style:{width:"100%"},children:"Submit"}):null]})}));let g=u.InputContainerForm,h=u.EmailInputForm,y=/*#__PURE__*/t.styled(s.LoginMethodIconWrapper).withConfig({displayName:"StyledLoginMethodIconWrapper",componentId:"sc-30d3bab7-0"})(["display:inline-flex;"]);exports.ConnectEmailForm=m;