@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 9.08 kB
JavaScript
"use strict";var e=require("@abstract-foundation/agw-client"),r=require("@abstract-foundation/agw-client/actions"),n=require("viem"),o=require("viem/accounts"),t=require("viem/chains"),i=require("./privy-provider-CU_DJPSa.js"),a=require("./internal-context-GxD_jR-e.js"),c=require("./getEmbeddedConnectedWallet-DTU4T9TJ.js"),s=require("./smart-wallets-byarphWU.js");require("react/jsx-runtime"),require("mipd"),require("react"),require("react-device-detect"),require("viem/utils"),require("@privy-io/js-sdk-core"),require("uuid"),require("jose"),require("eventemitter3"),require("@coinbase/wallet-sdk"),require("@marsidev/react-turnstile"),require("styled-components"),require("tinycolor2"),require("@heroicons/react/24/outline/DevicePhoneMobileIcon"),require("@heroicons/react/24/outline/FingerPrintIcon"),require("@heroicons/react/24/outline/PhoneIcon"),require("@heroicons/react/24/outline/ShieldCheckIcon"),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/24/outline/ChevronDownIcon"),require("@heroicons/react/24/outline/CalendarIcon"),require("@heroicons/react/24/outline/ExclamationTriangleIcon"),require("@headlessui/react"),require("@walletconnect/ethereum-provider"),require("zustand"),require("fast-password-entropy"),require("secure-password-utilities"),require("secure-password-utilities/wordlists"),require("@heroicons/react/24/outline/UserCircleIcon"),require("@heroicons/react/24/outline/EnvelopeIcon"),require("@heroicons/react/20/solid/CheckIcon"),require("@heroicons/react/24/outline/WalletIcon"),require("@heroicons/react/24/outline/CheckIcon"),require("@heroicons/react/24/outline/Square2StackIcon"),require("@heroicons/react/24/outline/ExclamationCircleIcon"),require("@heroicons/react/24/outline/ArrowTopRightOnSquareIcon"),require("@heroicons/react/24/solid/DocumentCheckIcon"),require("@heroicons/react/24/solid/XCircleIcon"),require("@heroicons/react/24/solid/CheckCircleIcon"),require("qrcode"),require("@heroicons/react/24/outline/ChevronRightIcon"),require("@heroicons/react/24/outline/LockClosedIcon"),require("@heroicons/react/24/outline/PencilSquareIcon"),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/outline/ArrowDownTrayIcon"),require("@heroicons/react/24/outline/ClipboardDocumentCheckIcon"),require("@heroicons/react/24/outline/DocumentDuplicateIcon"),require("@heroicons/react/24/solid/LockClosedIcon"),require("@heroicons/react/24/outline/CheckCircleIcon"),require("@heroicons/react/24/outline/InformationCircleIcon"),require("@heroicons/react/24/outline/CreditCardIcon"),require("@heroicons/react/24/outline/QrCodeIcon"),require("@heroicons/react/24/solid/ArrowsRightLeftIcon"),require("@heroicons/react/24/outline/GlobeAltIcon"),require("ofetch"),require("@heroicons/react/24/outline"),require("@heroicons/react/24/outline/ClipboardDocumentIcon"),require("@heroicons/react/24/outline/CloudArrowUpIcon"),require("@heroicons/react/24/outline/NoSymbolIcon"),require("@heroicons/react/24/outline/ClockIcon"),require("@heroicons/react/24/outline/TrashIcon"),require("@heroicons/react/24/solid/CheckBadgeIcon"),require("@heroicons/react/24/solid/IdentificationIcon"),require("@heroicons/react/24/outline/MinusCircleIcon"),require("@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon"),require("@heroicons/react/24/solid/ShieldCheckIcon"),require("js-cookie"),require("permissionless"),require("permissionless/accounts"),require("permissionless/clients/pimlico"),require("viem/account-abstraction"),exports.useAbstractSmartWallets=function(){let{user:l}=i.usePrivyContext(),{hideWalletUIs:u,openPrivyModal:d,chains:h,appId:p,rpcConfig:g,client:q}=a.usePrivyInternal(),m=i.useAppConfig(),{wallets:y}=i.useWallets(),{setModalData:I}=i.usePrivyModal(),C=i.getPrivyEthereumWallet(l),v=async(r=t.abstractTestnet.id)=>{let a=c.getEmbeddedConnectedWallet(y);if(!a)throw Error("No connected wallet found");let s="string"==typeof r?n.hexToNumber(r):r;if(![t.abstractTestnet.id,2741].includes(s))throw Error("Error, only Abstract chains are supported");let l=h.find((e=>e.id===s));if(!l)throw Error("Chain not configured");await a.switchChain(l.id);let u=await a.getEthereumProvider(),d=n.createWalletClient({account:a.address,transport:n.custom(u)}),q=o.toAccount({address:a.address,signMessage:d.signMessage,signTransaction:d.signTransaction,signTypedData:d.signTypedData});return await e.createAbstractClient({chain:l,transport:n.http(i.getJsonRpcEndpointFromChain(l,g,p)),publicTransport:n.http(i.getJsonRpcEndpointFromChain(l,g,p)),signer:q})};return{signMessage:async({message:e},r)=>{let n=await v(r);return new Promise((async(r,o)=>{let{entropyId:t,entropyIdVerifier:a}=i.getEntropyDetailsForUser(l);u.current=!0,I({connectWallet:{recoveryMethod:C.recoveryMethod,connectingWalletAddress:C.address,entropyId:t,entropyIdVerifier:a,onCompleteNavigateTo:i.SignRequestScreen,onFailure:()=>{}},signMessage:{method:"personal_sign",data:e,confirmAndSign:()=>n.signMessage({message:e}),onSuccess:e=>r(e),onFailure:o,uiOptions:{isCancellable:!0}}}),d(i.EmbeddedWalletConnectingScreen)})).finally((()=>{u.current=!1}))},signTypedData:async(e,r)=>{let n=await v(r);return new Promise((async(r,o)=>{u.current=!0;let{entropyId:t,entropyIdVerifier:a}=i.getEntropyDetailsForUser(l);I({connectWallet:{recoveryMethod:C.recoveryMethod,connectingWalletAddress:C.address,entropyId:t,entropyIdVerifier:a,onCompleteNavigateTo:i.SignRequestScreen,onFailure:()=>{}},signMessage:{method:"eth_signTypedData_v4",data:e,confirmAndSign:()=>n.signTypedData(e),onSuccess:e=>r(e),onFailure:o,uiOptions:{isCancellable:!0}}}),d(i.EmbeddedWalletConnectingScreen)})).finally((()=>{u.current=!1}))},sendTransaction:async e=>{let n=await v(e.chainId),o=[],t="calls"in e&&void 0!==e.calls;return o=t?[...e.calls]:[e],new Promise((async(a,c)=>{u.current=!0;let{entropyId:h,entropyIdVerifier:p}=i.getEntropyDetailsForUser(l);I({connectWallet:{recoveryMethod:C.recoveryMethod,connectingWalletAddress:C.address,entropyId:h,entropyIdVerifier:p,onCompleteNavigateTo:i.SendTransactionScreen,onFailure:()=>{}},sendTransaction:{transactionRequests:s.callsToTransactionRequests({calls:o,chain:n.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:h,entropyIdVerifier:p,transactingWalletAddress:n.account.address,transactingWalletIndex:void 0,scanTransaction:async()=>{if(!q)throw Error("Privy client not found");let o=t?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(o);return await q.scanTransaction({metadata:{domain:m.embeddedWallets.transactionScanning.domain},chain_id:i.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:()=>t?n.sendTransactionBatch(e):n.sendTransaction(e),onSuccess:e=>a(e.hash),onFailure:c,uiOptions:{isCancellable:!0}}}),d(i.EmbeddedWalletConnectingScreen)})).finally((()=>{u.current=!1}))},signTransaction:async e=>{let n=await v(e.chainId),o=[],t="calls"in e&&void 0!==e.calls;return o=t?[...e.calls]:[e],new Promise((async(a,c)=>{u.current=!0;let{entropyId:h,entropyIdVerifier:p}=i.getEntropyDetailsForUser(l);I({connectWallet:{recoveryMethod:C.recoveryMethod,connectingWalletAddress:C.address,entropyId:h,entropyIdVerifier:p,onCompleteNavigateTo:i.SendTransactionScreen,onFailure:()=>{}},sendTransaction:{transactionRequests:s.callsToTransactionRequests({calls:o,chain:n.chain,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,nonce:e.nonce?BigInt(e.nonce):void 0}),entropyId:h,entropyIdVerifier:p,transactingWalletAddress:n.account.address,transactingWalletIndex:void 0,scanTransaction:async()=>{if(!q)throw Error("Privy client not found");let o=t?r.getBatchTransactionObject(n.account.address,e):e,i=await n.prepareAbstractTransactionRequest(o);return await q.scanTransaction({metadata:{domain:m.embeddedWallets.transactionScanning.domain},chain_id:i.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}]}})},signOnly:!0,getIsSponsored:async()=>void 0!==e.paymaster&&void 0!==e.paymasterInput,onConfirm:()=>{if(!t)return n.signTransaction(e);throw Error("Batch transactions not supported for signing")},onSuccess:e=>a(e.hash),onFailure:c,uiOptions:{isCancellable:!0}}}),d(i.EmbeddedWalletConnectingScreen)})).finally((()=>{u.current=!1}))}}};