@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 8.9 kB
JavaScript
"use strict";var e=require("@abstract-foundation/agw-client"),r=require("@abstract-foundation/agw-client/actions"),n=require("viem"),t=require("viem/accounts"),a=require("viem/chains"),i=require("./privy-context-NMR-GjnL.js"),o=require("./SignRequestScreen-cAAtS6nl.js"),s=require("./internal-context-DNWjSiYq.js"),c=require("./getEmbeddedConnectedWallet-6TsVZJkD.js"),l=require("./smart-wallets-65yy6DGK.js");require("react"),require("react/jsx-runtime"),require("lucide-react"),require("styled-components"),require("@privy-io/urls"),require("@scure/base"),require("@privy-io/js-sdk-core"),require("./paths-B00ZrFQm.js"),require("ofetch"),require("tinycolor2"),require("@heroicons/react/24/outline/UserCircleIcon"),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("@heroicons/react/20/solid/CheckIcon"),require("@heroicons/react/24/outline/EnvelopeIcon"),require("@heroicons/react/24/outline/PhoneIcon"),require("react-device-detect"),require("@heroicons/react/24/outline/ExclamationTriangleIcon"),require("@heroicons/react/24/outline/WalletIcon"),require("@heroicons/react/24/outline/ExclamationCircleIcon"),require("@heroicons/react/24/outline/Square2StackIcon"),require("fast-password-entropy"),require("secure-password-utilities"),require("secure-password-utilities/wordlists"),require("@heroicons/react/24/outline/LockClosedIcon"),require("@heroicons/react/24/outline/PencilSquareIcon"),require("jose"),require("@heroicons/react/24/outline/ArrowPathIcon"),require("@heroicons/react/24/outline/EyeIcon"),require("@heroicons/react/24/outline/EyeSlashIcon"),require("@heroicons/react/24/outline/KeyIcon"),require("@heroicons/react/24/solid/CheckCircleIcon"),require("@heroicons/react/24/outline/ArrowDownTrayIcon"),require("@heroicons/react/24/outline/ClipboardDocumentCheckIcon"),require("@heroicons/react/24/outline/DocumentDuplicateIcon"),require("@heroicons/react/24/solid/XCircleIcon"),require("@heroicons/react/24/outline/ShieldCheckIcon"),require("@heroicons/react/24/outline"),require("@tanstack/react-virtual"),require("@heroicons/react/24/outline/CheckIcon"),require("qrcode"),require("viem/utils"),require("eventemitter3"),require("zustand"),require("@walletconnect/ethereum-provider"),require("@heroicons/react/24/outline/CreditCardIcon"),require("@heroicons/react/24/outline/QrCodeIcon"),require("@heroicons/react/24/solid/ArrowsRightLeftIcon"),require("@heroicons/react/24/outline/InformationCircleIcon"),require("@heroicons/react/24/outline/ClipboardDocumentIcon"),require("@heroicons/react/24/outline/ChevronDownIcon"),require("@privy-io/ethereum"),require("@heroicons/react/24/outline/CheckCircleIcon"),require("@heroicons/react/24/outline/GlobeAltIcon"),require("@headlessui/react"),require("@heroicons/react/24/outline/FingerPrintIcon"),require("permissionless"),require("permissionless/accounts"),require("permissionless/clients/pimlico"),require("viem/account-abstraction"),exports.useAbstractSmartWallets=function(){let{user:u}=i.usePrivyContext(),{hideWalletUIs:d,openPrivyModal:p,chains:h,appId:y,rpcConfig:g,client:m}=s.usePrivyInternal(),q=o.useAppConfig(),{wallets:I}=o.useWallets(),{setModalData:v}=o.usePrivyModal(),f=i.getPrivyEthereumWallet(u),T=!!f&&i.getIsUnifiedWallet(f),C=async(r=a.abstractTestnet.id)=>{let i=c.getEmbeddedConnectedWallet(I);if(!i)throw Error("No connected wallet found");let s="string"==typeof r?n.hexToNumber(r):r;if(![a.abstractTestnet.id,2741,a.zksync.id].includes(s))throw Error("Error, only Abstract and ZKSync Era chains are supported");let l=h.find((e=>e.id===s));if(!l)throw Error("Chain not configured");await i.switchChain(l.id);let u=await i.getEthereumProvider(),d=n.createWalletClient({account:i.address,transport:n.custom(u)}),p=t.toAccount({address:i.address,signMessage:d.signMessage,signTransaction:d.signTransaction,signTypedData:d.signTypedData});return await e.createAbstractClient({chain:l,transport:n.http(o.getJsonRpcEndpointFromChain(l,g,y)),publicTransport:n.http(o.getJsonRpcEndpointFromChain(l,g,y)),signer:p})};return{signMessage:async({message:e},r)=>{let n=await C(r);return new Promise((async(r,t)=>{let{entropyId:a,entropyIdVerifier:i}=o.getEntropyDetailsForUser(u);d.current=!0,v({connectWallet:{recoveryMethod:f.recoveryMethod,connectingWalletAddress:f.address,isUnifiedWallet:T,entropyId:a,entropyIdVerifier:i,onCompleteNavigateTo:o.SignRequestScreen,onFailure:()=>{}},signMessage:{method:"personal_sign",data:e,confirmAndSign:()=>n.signMessage({message:e}),onSuccess:e=>r(e),onFailure:t,uiOptions:{isCancellable:!0}}}),p(o.EmbeddedWalletConnectingScreen)})).finally((()=>{d.current=!1}))},signTypedData:async(e,r)=>{let n=await C(r);return new Promise((async(r,t)=>{d.current=!0;let{entropyId:a,entropyIdVerifier:i}=o.getEntropyDetailsForUser(u);v({connectWallet:{recoveryMethod:f.recoveryMethod,connectingWalletAddress:f.address,isUnifiedWallet:T,entropyId:a,entropyIdVerifier:i,onCompleteNavigateTo:o.SignRequestScreen,onFailure:()=>{}},signMessage:{method:"eth_signTypedData_v4",data:e,confirmAndSign:()=>n.signTypedData(e),onSuccess:e=>r(e),onFailure:t,uiOptions:{isCancellable:!0}}}),p(o.EmbeddedWalletConnectingScreen)})).finally((()=>{d.current=!1}))},sendTransaction:async e=>{let n=await C(e.chainId),t=[],a="calls"in e&&void 0!==e.calls;return t=a?[...e.calls]:[e],new Promise((async(i,s)=>{d.current=!0;let{entropyId:c,entropyIdVerifier:h}=o.getEntropyDetailsForUser(u);v({connectWallet:{recoveryMethod:f.recoveryMethod,connectingWalletAddress:f.address,isUnifiedWallet:T,entropyId:c,entropyIdVerifier:h,onCompleteNavigateTo:o.SendTransactionScreen,onFailure:()=>{}},sendTransaction:{transactionRequests:l.callsToTransactionRequests({calls:t,chain:n.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:c,entropyIdVerifier:h,transactingWalletAddress:n.account.address,transactingWalletIndex:void 0,prepareTransactionRequest:async()=>{let t=a?r.getBatchTransactionObject(n.account.address,e):e;return await n.prepareAbstractTransactionRequest(t)},scanTransaction:async()=>{if(!m)throw Error("Privy client not found");let t=a?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(t);return await m.scanTransaction({metadata:{domain:q.embeddedWallets.transactionScanning.domain},chain_id:e.chainId.toString(),request:{method:"eth_sendTransaction",params:[{from:i.from,to:i.to,value:i.value?.toString(),gas:i.gas?.toString(),gasPrice:i.gasPrice?.toString(),nonce:i.nonce?.toString(),data:i.data,eip_712_meta:{paymaster_params:{paymaster:i.paymaster,paymaster_input:i.paymasterInput}}}]}})},signOnly:!1,getIsSponsored:async()=>void 0!==e.paymaster&&void 0!==e.paymasterInput,onConfirm:()=>a?n.sendTransactionBatch(e):n.sendTransaction(e),onSuccess:e=>i(e.hash),onFailure:s,uiOptions:{isCancellable:!0}}}),p(o.EmbeddedWalletConnectingScreen)})).finally((()=>{d.current=!1}))},signTransaction:async e=>{let n=await C(e.chainId),t=[],a="calls"in e&&void 0!==e.calls;return t=a?[...e.calls]:[e],new Promise((async(i,s)=>{d.current=!0;let{entropyId:c,entropyIdVerifier:h}=o.getEntropyDetailsForUser(u);v({connectWallet:{recoveryMethod:f.recoveryMethod,connectingWalletAddress:f.address,isUnifiedWallet:T,entropyId:c,entropyIdVerifier:h,onCompleteNavigateTo:o.SendTransactionScreen,onFailure:()=>{}},sendTransaction:{transactionRequests:l.callsToTransactionRequests({calls:t,chain:n.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:c,entropyIdVerifier:h,transactingWalletAddress:n.account.address,transactingWalletIndex:void 0,prepareTransactionRequest:async()=>{let t=a?r.getBatchTransactionObject(n.account.address,e):e;return await n.prepareAbstractTransactionRequest(t)},scanTransaction:async()=>{if(!m)throw Error("Privy client not found");let t=a?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(t);return await m.scanTransaction({metadata:{domain:q.embeddedWallets.transactionScanning.domain},chain_id:e.chainId.toString(),request:{method:"eth_sendTransaction",params:[{from:i.from,to:i.to,value:i.value?.toString(),gas:i.gas?.toString(),gasPrice:i.gasPrice?.toString(),nonce:i.nonce?.toString(),data:i.data,eip_712_meta:{paymaster_params:{paymaster:i.paymaster,paymaster_input:i.paymasterInput}}}]}})},signOnly:!0,getIsSponsored:async()=>void 0!==e.paymaster&&void 0!==e.paymasterInput,onConfirm:async()=>{let t=a?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(t);return n.signTransaction(i)},onSuccess:e=>i(e.hash),onFailure:s,uiOptions:{isCancellable:!0}}}),p(o.EmbeddedWalletConnectingScreen)})).finally((()=>{d.current=!1}))}}};