@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 7.43 kB
JavaScript
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("./get-is-unified-wallet-UpdjHxOV.js"),i=require("./twitter-CJSxxOMI.js"),o=require("@heroicons/react/24/outline/GlobeAltIcon"),n=require("./twitch-BNvhZb2Y.js"),a=require("./context-D-ZJYjUg.js"),s=require("./internal-context-BJv4f_bO.js"),u=require("./shouldProceedtoEmbeddedWalletCreationFlow-DADJI9f0.js"),d=require("./ScreenLayout-CMb-Fua0.js"),c=require("./capitalizeFirstLetter-D-K8mqBm.js"),l=require("./index-C8lpxYDX.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("@privy-io/are-addresses-equal"),require("@privy-io/js-sdk-core"),require("tinycolor2"),require("ofetch"),require("./ModalHeader-BCPQgekO.js"),require("styled-components"),require("./useActiveWallet-Cn6zOXx5.js"),require("zustand"),require("react-device-detect"),require("./use-export-wallet-B5ujV5Nk.js"),require("eventemitter3"),require("viem/utils"),require("./useWallets-CKAypPZB.js"),require("./events-context-Di6--rDg.js"),require("viem"),require("./getPublicClient-BsmZyCGX.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("./Screen-BfKedqka.js"),require("./index-ByFhjjzH.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-cfS6o4tX.js"),require("@scure/base"),require("@headlessui/react"),require("@walletconnect/ethereum-provider"),require("@privy-io/urls"),require("./PrivyPluginContext-DsgaS6n9.js"),require("./getEmbeddedConnectedWallet-pJd-l936.js"),require("js-cookie"),require("./frame-Oz7volks.js"),require("@privy-io/routes"),require("x402/client"),require("@privy-io/api-base"),require("viem/accounts"),require("./use-sign-with-user-signer-Cu_6Bx7m.js");var v=/*#__PURE__*/m(r),y=/*#__PURE__*/m(o);const p=({style:r})=>/*#__PURE__*/e.jsx(y.default,{style:{color:"var(--privy-color-error)",...r}});let E={google:{name:"Google",component:i.Google},discord:{name:"Discord",component:i.Discord},github:{name:"Github",component:i.Github},linkedin:{name:"LinkedIn",component:i.LinkedIn},twitter:{name:"Twitter",component:i.Twitter},spotify:{name:"Spotify",component:i.Spotify},instagram:{name:"Instagram",component:i.Instagram},tiktok:{name:"Tiktok",component:i.Tiktok},line:{name:"LINE",component:n.Line},twitch:{name:"Twitch",component:n.Twitch},apple:{name:"Apple",component:i.Apple}},h=({iconUrl:e,...r})=>v.default.createElement("svg",{width:"33",height:"32",viewBox:"0 0 33 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},v.default.createElement("foreignObject",{x:"2",y:"2",width:"29",height:"28"},v.default.createElement("img",{src:e,width:"29",height:"28",style:{display:"block",objectFit:"contain",borderRadius:"4px"},alt:"Provider icon"})));const S=(e,r)=>{if(e in E)return E[e];if(t.isCustomOAuthProvider(e)&&r){let t=r.find((r=>r.provider===e));if(t)return{name:t.provider_display_name,component:e=>v.default.createElement(h,{...e,iconUrl:t.provider_icon_url})}}return{name:"Unknown",component:p}};const C=({providerName:r,ProviderLogo:t,success:i,errorMessage:o,onRetry:n})=>{let a=i?`Successfully connected with ${r}`:o?o.message:`Verifying connection to ${r}`;/*#__PURE__*/return e.jsx(d.ScreenLayout,{title:a,subtitle:i?"You're good to go!":o?o.detail:"Just a few moments more",icon:t,iconVariant:"loading",iconLoadingStatus:{success:i,fail:!!o},secondaryCta:o?.retryable&&n?{label:"Retry",onClick:n}:void 0,watermark:!0})},q={component:()=>{let{authenticated:i,logout:o,ready:n,user:d}=t.usePrivyContext(),{setModalData:m,navigate:v,resetNavigation:y}=t.usePrivyModal(),p=a.useAppConfig(),{getAuthMeta:E,initLoginWithOAuth:h,loginWithOAuth:q,updateWallets:g,setReadyToTrue:f,closePrivyModal:A,createAnalyticsEvent:T}=s.usePrivyInternal(),[_,w]=r.useState(!1),[P,j]=r.useState(void 0),O=E()?.provider||"google",{name:R,component:U}=S(O,p.customOAuthProviders);return r.useEffect((()=>{q(O).then((()=>{w(!0),f(!0)})).catch((e=>{if(f(!1),e?.privyErrorCode===s.PrivyErrorCode.ALLOWLIST_REJECTED)return j(void 0),y(),void v("AllowlistRejectionScreen");if(e?.privyErrorCode===s.PrivyErrorCode.USER_LIMIT_REACHED)return console.error(new s.PrivyUserLimitReachedError(e).toString()),j(void 0),y(),void v("UserLimitReachedScreen");if(e?.privyErrorCode===s.PrivyErrorCode.USER_DOES_NOT_EXIST)return j(void 0),y(),void v("AccountNotFoundScreen");if(e?.privyErrorCode===s.PrivyErrorCode.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce)return j(void 0),y(),m({accountTransfer:{nonce:e.data?.data?.nonce,account:e.data?.data?.subject,displayName:e.data?.data?.account?.displayName,linkMethod:E()?.provider,embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress,oAuthUserInfo:e.data?.data?.otherUser?.oAuthUserInfo}}),void v("LinkConflictScreen");let{retryable:r,detail:t}=function(e,r,t){let i={detail:"",retryable:!1},o=c.e(r);if(e?.privyErrorCode===s.PrivyErrorCode.LINKED_TO_ANOTHER_USER&&(i.detail="This account has already been linked to another user."),e?.privyErrorCode===s.PrivyErrorCode.INVALID_CREDENTIALS&&(i.retryable=!0,i.detail="Something went wrong. Try again."),e.privyErrorCode===s.PrivyErrorCode.OAUTH_USER_DENIED&&(i.detail=`Retry and check ${o} to finish connecting your account.`,i.retryable=!0),e?.privyErrorCode===s.PrivyErrorCode.TOO_MANY_REQUESTS&&(i.detail="Too many requests. Please wait before trying again."),e?.privyErrorCode===s.PrivyErrorCode.TOO_MANY_REQUESTS&&e.message.includes("provider rate limit")){let e=S(r,t).name;i.detail=`Request limit reached for ${e}. Please wait a moment and try again.`}if(e?.privyErrorCode===s.PrivyErrorCode.OAUTH_ACCOUNT_SUSPENDED){let e=S(r,t).name;i.detail=`Your ${e} account is suspended. Please try another login method.`}return e?.privyErrorCode===s.PrivyErrorCode.CANNOT_LINK_MORE_OF_TYPE&&(i.detail="You cannot authorize more than one account for this user."),e?.privyErrorCode===s.PrivyErrorCode.OAUTH_UNEXPECTED&&r.startsWith("privy:")&&(i.detail="Something went wrong. Please try again."),i}(e,O,p.customOAuthProviders);j({retryable:r,detail:t,message:"Authentication failed"})})).finally((()=>{l.stripUrlOAuthParamsAndRemoveStateCode()}))}),[R,O]),r.useEffect((()=>{if(n&&i&&_&&d){if(p?.legal.requireUsersAcceptTerms&&!d.hasAcceptedTerms){let e=setTimeout((()=>{v("AffirmativeConsentScreen")}),a.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}if(u.shouldProceedtoEmbeddedWalletCreationFlow(d,p.embeddedWallets)){let e=setTimeout((()=>{m({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),T({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,provider:O,screen:"OAuthStatusScreen"}}),o()},callAuthOnSuccessOnClose:!0}}),v("EmbeddedWalletOnAccountCreateScreen")}),a.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return()=>clearTimeout(e)}{let e=setTimeout((()=>A({shouldCallAuthOnSuccess:!0,isSuccess:!0})),a.DEFAULT_SUCCESS_SCREEN_DURATION_MS);return g(),()=>clearTimeout(e)}}}),[n,i,_,d]),/*#__PURE__*/e.jsx(C,{providerName:R,ProviderLogo:U,success:_,errorMessage:P,onRetry:P?.retryable?()=>{l.stripUrlOAuthParamsAndRemoveStateCode(),h(O),j(void 0)}:void 0})},isShownBeforeReady:!0};exports.OAuthStatusScreen=q,exports.OAuthStatusScreenView=C,exports.default=q;