@privy-io/react-auth
Version:
React client for the Privy Auth API
27 lines (26 loc) • 4.82 kB
JavaScript
;var e=require("react/jsx-runtime"),r=require("@scure/base"),i=require("lucide-react"),t=require("react"),s=require("styled-components"),o=require("viem"),n=require("@privy-io/js-sdk-core"),a=require("./CopyToClipboard-CC0DCGEH.js"),l=require("./Layouts-D3TOcPhm.js"),c=require("./JsonTree-C28xtYM0.js"),u=require("./use-export-wallet-B5ujV5Nk.js"),d=require("./context-D-ZJYjUg.js"),p=require("./internal-context-BJv4f_bO.js"),y=require("./get-is-unified-wallet-UpdjHxOV.js"),g=require("./ScreenLayout-CMb-Fua0.js");require("eventemitter3"),require("viem/utils"),require("./useWallets-CKAypPZB.js"),require("tinycolor2"),require("ofetch"),require("@privy-io/are-addresses-equal"),require("./ModalHeader-BCPQgekO.js"),require("./useActiveWallet-Cn6zOXx5.js"),require("zustand"),require("react-device-detect"),require("./events-context-Di6--rDg.js"),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");const x=s.styled.img`
&& {
height: ${e=>"sm"===e.size?"65px":"140px"};
width: ${e=>"sm"===e.size?"65px":"140px"};
border-radius: 16px;
margin-bottom: 12px;
}
`;let h=e=>{if(!o.isHex(e))return e;try{let r=o.hexToString(e);return r.includes("�")?e:r}catch{return e}},q=e=>{try{let i=r.base64.decode(e),t=(new TextDecoder).decode(i);return t.includes("�")?e:t}catch{return e}},v=r=>{let{types:i,primaryType:t,...s}=r.typedData;/*#__PURE__*/return e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsx(S,{data:s}),/*#__PURE__*/e.jsx(a.CopytoClipboardButton,{text:(o=r.typedData,JSON.stringify(o,null,2)),itemName:"full payload to clipboard"})," "]});var o};const m=({method:r,messageData:t,copy:s,iconUrl:o,isLoading:n,success:a,walletProxyIsLoading:c,errorMessage:u,isCancellable:d,onSign:p,onCancel:y,onClose:m})=>/*#__PURE__*/e.jsx(g.ScreenLayout,{title:s.title,subtitle:s.description,showClose:!0,onClose:m,icon:i.Edit,iconVariant:"subtle",helpText:u?/*#__PURE__*/e.jsx(C,{children:u}):void 0,primaryCta:{label:s.buttonText,onClick:p,disabled:n||a||c,loading:n},secondaryCta:d?{label:"Not now",onClick:y,disabled:n||a||c}:void 0,watermark:!0,children:/*#__PURE__*/e.jsxs(l.FixedGappedContainer,{children:[o?/*#__PURE__*/e.jsx(x,{style:{alignSelf:"center"},size:"sm",src:o,alt:"app image"}):null,/*#__PURE__*/e.jsxs(j,{children:["personal_sign"===r&&/*#__PURE__*/e.jsx(T,{children:h(t)}),"eth_signTypedData_v4"===r&&/*#__PURE__*/e.jsx(v,{typedData:t}),"solana_signMessage"===r&&/*#__PURE__*/e.jsx(T,{children:q(t)})]})]})}),E={component:()=>{let{authenticated:r}=y.usePrivyContext(),{initializeWalletProxy:i,closePrivyModal:s}=p.usePrivyInternal(),{navigate:o,data:a,onUserCloseViaDialogOrKeybindRef:l}=y.usePrivyModal(),[c,g]=t.useState(!0),[x,h]=t.useState(""),[q,v]=t.useState(),[E,j]=t.useState(null),[C,S]=t.useState(!1);t.useEffect((()=>{r||o("LandingScreen")}),[r]),t.useEffect((()=>{i(d.WALLET_PROXY_TIMEOUT).then((e=>{g(!1),e||(h("An error has occurred, please try again."),v(new u.PrivyProviderRpcError(new u.ProviderRpcError(x,n.ProviderErrors.E32603_DEFAULT_INTERNAL_ERROR.eipCode))))}))}),[]);let{method:T,data:R,confirmAndSign:b,onSuccess:w,onFailure:P,uiOptions:f}=a.signMessage,_={title:f?.title||"Sign message",description:f?.description||"Signing this message will not cost you any fees.",buttonText:f?.buttonText||"Sign and continue"},L=e=>{e?w(e):P(q||new u.PrivyProviderRpcError(new u.ProviderRpcError("The user rejected the request.",n.ProviderErrors.E4001_USER_REJECTED_REQUEST.eipCode))),s({shouldCallAuthOnSuccess:!1}),setTimeout((()=>{j(null),h(""),v(void 0)}),200)};l.current=()=>{L(E)};/*#__PURE__*/return e.jsx(m,{method:T,messageData:R,copy:_,iconUrl:f?.iconUrl&&"string"==typeof f.iconUrl?f.iconUrl:void 0,isLoading:C,success:null!==E,walletProxyIsLoading:c,errorMessage:x,isCancellable:f?.isCancellable,onSign:async()=>{S(!0),h("");try{let e=await b();j(e),S(!1),setTimeout((()=>{L(e)}),d.DEFAULT_SUCCESS_SCREEN_DURATION_MS)}catch(e){console.error(e),h("An error has occurred, please try again."),v(new u.PrivyProviderRpcError(new u.ProviderRpcError(x,n.ProviderErrors.E32603_DEFAULT_INTERNAL_ERROR.eipCode))),S(!1)}},onCancel:()=>L(null),onClose:()=>L(E)})}};let j=s.styled.div`
flex: 1;
display: flex;
flex-direction: column;
gap: 16px;
`,C=s.styled.p`
&& {
margin: 0;
width: 100%;
text-align: center;
color: var(--privy-color-error-dark);
font-size: 14px;
line-height: 22px;
}
`,S=s.styled(c.DisplayJsonTree)`
margin-top: 0;
`,T=s.styled(c.Message)`
margin-top: 0;
`;exports.SignRequestScreen=E,exports.SignRequestView=m,exports.default=E;