@privy-io/react-auth
Version:
React client for the Privy Auth API
3 lines (2 loc) • 10 kB
JavaScript
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("react-device-detect"),i=require("styled-components"),o=require("./useActiveWallet-BOX8xCn9.js"),a=require("./OpenLink-BpCUf9iR.js"),n=require("./QrCode-DsQD8cG6.js"),s=require("lucide-react"),l=require("./Button-Bm_Ft0Dw.js"),d=require("./LabelXs-CYMv6rOZ.js"),c=require("./context-DFq1obBO.js"),u=require("./internal-context-NWsAL807.js"),p=require("./get-is-unified-wallet-D4ouXJpi.js"),h=require("./shouldProceedtoEmbeddedWalletCreationFlow-DZvEYqlO.js"),m=require("./ScreenLayout-BeH-Q6N2.js"),y=require("./farcaster-CWHXGAib.js");require("zustand"),require("./prepareFundingModalData-Cnd6rhhJ.js"),require("@privy-io/js-sdk-core"),require("eventemitter3"),require("./events-context-Di6--rDg.js"),require("viem"),require("viem/utils"),require("./getPublicClient-CGlodIp_.js"),require("./useWallets-BLFNjTwC.js"),require("qrcode"),require("tinycolor2"),require("ofetch"),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("./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");let v=/*#__PURE__*/i.styled.div.withConfig({displayName:"Container",componentId:"sc-913deead-0"})(["width:100%;"]),g=/*#__PURE__*/i.styled.div.withConfig({displayName:"InputContainer",componentId:"sc-913deead-1"})(["display:flex;align-items:center;justify-content:space-between;gap:0.75rem;padding:0.75rem;height:56px;background:",";border:1px solid var(--privy-color-foreground-4);border-radius:var(--privy-border-radius-md);&:hover{border-color:",";}"],(e=>e.$disabled?"var(--privy-color-background-2)":"var(--privy-color-background)"),(e=>e.$disabled?"var(--privy-color-foreground-4)":"var(--privy-color-foreground-3)")),C=/*#__PURE__*/i.styled.div.withConfig({displayName:"TextContainer",componentId:"sc-913deead-2"})(["flex:1;min-width:0;display:flex;align-items:center;"]),f=/*#__PURE__*/i.styled.span.withConfig({displayName:"Text",componentId:"sc-913deead-3"})(["display:block;font-size:16px;line-height:24px;color:",";overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all;@media (min-width:441px){font-size:14px;line-height:20px;}"],(e=>e.$disabled?"var(--privy-color-foreground-2)":"var(--privy-color-foreground)")),x=/*#__PURE__*/i.styled(f).withConfig({displayName:"PlaceholderText",componentId:"sc-913deead-4"})(["color:var(--privy-color-foreground-3);font-style:italic;"]),q=/*#__PURE__*/i.styled(d.LabelXs).withConfig({displayName:"TitleLabel",componentId:"sc-913deead-5"})(["margin-bottom:0.5rem;"]),S=/*#__PURE__*/i.styled(l.SecondaryButton).withConfig({displayName:"CopyButton",componentId:"sc-913deead-6"})(["&&{gap:0.375rem;font-size:14px;flex-shrink:0;}"]);const b=({value:t,title:i,placeholder:o,className:a,showCopyButton:n=!0,truncate:l,maxLength:d=40,disabled:c=!1})=>{let[u,p]=r.useState(!1),h=l&&t?((e,r,t)=>{if((e=e.startsWith("https://")?e.slice(8):e).length<=t)return e;if("middle"===r){let r=Math.ceil(t/2)-2,i=Math.floor(t/2)-1;return`${e.slice(0,r)}...${e.slice(-i)}`}return`${e.slice(0,t-3)}...`})(t,l,d):t;return r.useEffect((()=>{if(u){let e=setTimeout((()=>p(!1)),3e3);return()=>clearTimeout(e)}}),[u]),/*#__PURE__*/e.jsxs(v,{className:a,children:[i&&/*#__PURE__*/e.jsx(q,{children:i}),/*#__PURE__*/e.jsxs(g,{$disabled:c,children:[/*#__PURE__*/e.jsx(C,{children:t?/*#__PURE__*/e.jsx(f,{$disabled:c,title:t,children:h}):/*#__PURE__*/e.jsx(x,{$disabled:c,children:o||"No value"})}),n&&t&&/*#__PURE__*/e.jsx(S,{onClick:function(e){e.stopPropagation(),navigator.clipboard.writeText(t).then((()=>p(!0))).catch(console.error)},size:"sm",children:u?/*#__PURE__*/e.jsxs(e.Fragment,{children:["Copied",/*#__PURE__*/e.jsx(s.Check,{size:14})]}):/*#__PURE__*/e.jsxs(e.Fragment,{children:["Copy",/*#__PURE__*/e.jsx(s.Copy,{size:14})]})})]})]})},w=({connectUri:r,loading:i,success:s,errorMessage:l,onBack:d,onClose:c,onOpenFarcaster:u})=>t.isMobile||i?t.isIOS?/*#__PURE__*/e.jsx(m.ScreenLayout,{title:l?l.message:"Sign in with Farcaster",subtitle:l?l.detail:"To sign in with Farcaster, please open the Farcaster app.",icon:y.Farcaster,iconVariant:"loading",iconLoadingStatus:{success:s,fail:!!l},primaryCta:r&&u?{label:"Open Farcaster app",onClick:u}:void 0,onBack:d,onClose:c,watermark:!0}):/*#__PURE__*/e.jsx(m.ScreenLayout,{title:l?l.message:"Signing in with Farcaster",subtitle:l?l.detail:"This should only take a moment",icon:y.Farcaster,iconVariant:"loading",iconLoadingStatus:{success:s,fail:!!l},onBack:d,onClose:c,watermark:!0,children:r&&t.isMobile&&/*#__PURE__*/e.jsx(j,{children:/*#__PURE__*/e.jsx(a.OpenLinkButton,{text:"Take me to Farcaster",url:r,color:"#8a63d2"})})}):
/*#__PURE__*/e.jsx(m.ScreenLayout,{title:"Sign in with Farcaster",subtitle:"Scan with your phone's camera to continue.",onBack:d,onClose:c,watermark:!0,children:/*#__PURE__*/e.jsxs(T,{children:[/*#__PURE__*/e.jsx(I,{children:r?/*#__PURE__*/e.jsx(n.QrCode,{url:r,size:275,squareLogoElement:y.Farcaster}):/*#__PURE__*/e.jsx(N,{children:/*#__PURE__*/e.jsx(o.Loader,{})})}),/*#__PURE__*/e.jsxs(k,{children:[/*#__PURE__*/e.jsx(A,{children:"Or copy this link and paste it into a phone browser to open the Farcaster app."}),r&&/*#__PURE__*/e.jsx(b,{value:r,truncate:"end",maxLength:30,showCopyButton:!0,disabled:!0})]})]})}),E={component:()=>{let{authenticated:t,logout:i,ready:o,user:a}=p.usePrivyContext(),{lastScreen:n,navigate:s,navigateBack:l,setModalData:d}=p.usePrivyModal(),m=c.useAppConfig(),{getAuthFlow:y,loginWithFarcaster:v,closePrivyModal:g,createAnalyticsEvent:C}=u.usePrivyInternal(),[f,x]=r.useState(void 0),[q,S]=r.useState(!1),[b,E]=r.useState(!1),j=r.useRef([]),T=y(),I=T?.meta.connectUri;return r.useEffect((()=>{let e=Date.now(),r=setInterval((async()=>{let t=await T.pollForReady.execute(),i=Date.now()-e;if(t){clearInterval(r),S(!0);try{await v(),E(!0)}catch(e){let r={retryable:!1,message:"Authentication failed"};if(e?.privyErrorCode===u.PrivyErrorCode.ALLOWLIST_REJECTED)return void s("AllowlistRejectionScreen");if(e?.privyErrorCode===u.PrivyErrorCode.USER_LIMIT_REACHED)return console.error(new u.PrivyUserLimitReachedError(e).toString()),void s("UserLimitReachedScreen");if(e?.privyErrorCode===u.PrivyErrorCode.USER_DOES_NOT_EXIST)return void s("AccountNotFoundScreen");if(e?.privyErrorCode===u.PrivyErrorCode.LINKED_TO_ANOTHER_USER)r.detail=e.message??"This account has already been linked to another user.";else{if(e?.privyErrorCode===u.PrivyErrorCode.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return d({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,displayName:e.data?.data?.account?.displayName,linkMethod:"farcaster",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress,farcasterEmbeddedAddress:e.data?.data?.otherUser?.farcasterEmbeddedAddress}}),void s("LinkConflictScreen");e?.privyErrorCode===u.PrivyErrorCode.INVALID_CREDENTIALS?(r.retryable=!0,r.detail="Something went wrong. Try again."):e?.privyErrorCode===u.PrivyErrorCode.TOO_MANY_REQUESTS&&(r.detail="Too many requests. Please wait before trying again.")}x(r)}}else i>12e4&&(clearInterval(r),x({retryable:!0,message:"Authentication failed",detail:"The request timed out. Try again."}))}),2e3);return()=>{clearInterval(r),j.current.forEach((e=>clearTimeout(e)))}}),[]),r.useEffect((()=>{if(o&&t&&b&&a){if(m?.legal.requireUsersAcceptTerms&&!a.hasAcceptedTerms){let e=setTimeout((()=>{s("AffirmativeConsentScreen")}),c.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}b&&(h.shouldProceedtoEmbeddedWalletCreationFlow(a,m.embeddedWallets)?j.current.push(setTimeout((()=>{d({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),C({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,screen:"FarcasterConnectStatusScreen"}}),i()},callAuthOnSuccessOnClose:!0}}),s("EmbeddedWalletOnAccountCreateScreen")}),c.DEFAULT_SUCCESS_SCREEN_DURATION_MS)):j.current.push(setTimeout((()=>g({shouldCallAuthOnSuccess:!0,isSuccess:!0})),c.DEFAULT_SUCCESS_SCREEN_DURATION_MS)))}}),[b,o,t,a]),/*#__PURE__*/e.jsx(w,{connectUri:I,loading:q,success:b,errorMessage:f,onBack:n?l:void 0,onClose:g,onOpenFarcaster:()=>{I&&(window.location.href=I)}})}};let j=/*#__PURE__*/i.styled.div.withConfig({displayName:"MobileLinkContainer",componentId:"sc-914339e1-0"})(["margin-top:24px;"]),T=/*#__PURE__*/i.styled.div.withConfig({displayName:"ContentContainer",componentId:"sc-914339e1-1"})(["display:flex;flex-direction:column;align-items:center;gap:24px;"]),I=/*#__PURE__*/i.styled.div.withConfig({displayName:"QrContainer",componentId:"sc-914339e1-2"})(["display:flex;align-items:center;justify-content:center;min-height:275px;"]),k=/*#__PURE__*/i.styled.div.withConfig({displayName:"InstructionsContainer",componentId:"sc-914339e1-3"})(["display:flex;flex-direction:column;align-items:center;gap:16px;"]),A=/*#__PURE__*/i.styled.div.withConfig({displayName:"InstructionText",componentId:"sc-914339e1-4"})(["font-size:0.875rem;text-align:center;color:var(--privy-color-foreground-2);"]),N=/*#__PURE__*/i.styled.div.withConfig({displayName:"LoaderWrapper",componentId:"sc-914339e1-5"})(["position:relative;width:82px;height:82px;"]);exports.FarcasterConnectStatusScreen=E,exports.FarcasterConnectStatusView=w,exports.default=E;