@privy-io/react-auth
Version:
React client for the Privy Auth API
2 lines (1 loc) • 6.27 kB
JavaScript
;var e=require("react/jsx-runtime"),r=require("react"),i=require("./EmbeddedWalletConnectingScreen-JRafXI8d.js"),t=require("./events-context-7-Gs8c_9.js"),n=require("./internal-context-CeWKmK5u.js"),o=require("./getEmbeddedConnectedWallet-6TsVZJkD.js"),c=require("./smart-wallets-DaqaXBrW.js");require("lucide-react"),require("viem"),require("fast-password-entropy"),require("secure-password-utilities"),require("secure-password-utilities/wordlists"),require("@heroicons/react/24/outline/UserCircleIcon"),require("styled-components"),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("@privy-io/js-sdk-core"),require("zustand"),require("@heroicons/react/24/outline"),require("@tanstack/react-virtual"),require("@heroicons/react/24/outline/CheckIcon"),require("qrcode"),require("viem/utils"),require("eventemitter3"),require("@scure/base"),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/ClipboardDocumentCheckIcon"),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("@privy-io/popup"),require("@heroicons/react/24/solid/CheckCircleIcon"),require("ofetch"),require("@heroicons/react/24/outline/FingerPrintIcon"),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/outline/ArrowDownTrayIcon"),require("@heroicons/react/24/outline/DocumentDuplicateIcon"),require("@heroicons/react/24/solid/XCircleIcon"),require("@heroicons/react/24/outline/ShieldCheckIcon"),require("@privy-io/urls"),require("tinycolor2"),require("./SignRequestScreen-Dy02euV9.js"),require("permissionless"),require("permissionless/accounts"),require("permissionless/clients/pimlico"),require("viem/account-abstraction");let a=/*#__PURE__*/r.createContext({client:void 0,getClientForChain:n.notImplemented});let l=/*#__PURE__*/r.createContext({config:void 0}),s=()=>{let{config:e}=r.useContext(l);return{config:e}},u=({children:i})=>{let[t,o]=r.useState(void 0),{client:c}=n.usePrivyInternal();return r.useEffect((()=>{!t&&c&&(async()=>{try{if(!c)return void console.warn("No client found");let e=await c.getSmartWalletsConfig();o(e)}catch(e){console.warn("Error generating smart wallet config: ",e)}})()}),[!!c]),/*#__PURE__*/e.jsx(l.Provider,{value:{config:t},children:i})},d=({config:a,children:l})=>{let{config:u}=s(),{appId:d}=n.usePrivyInternal(),{chains:q,defaultChain:C,rpcConfig:g}=t.useAppConfig(),{wallets:m}=i.useWallets(),{user:f}=i.usePrivyContext(),[p,I]=r.useState(),{wrapSmartAccountClientWithUIs:v}=c.useSmartWalletsUIWrapper(),w=i.getPrivyEthereumWallet(f),y=o.getEmbeddedConnectedWalletWithAddress(m,w?.address);r.useEffect((()=>{(async()=>{if(!u?.enabled)return;let e=u.configuredNetworks.find((e=>e.chainId===`eip155:${C.id}`))?C:q.find((e=>u.configuredNetworks.map((e=>e.chainId)).includes(`eip155:${e.id}`)));if(!e)throw new n.PrivyClientError("Could not find smart wallets chain configurations for any Privy client configured chains. Please configure smart wallets for your chains in the Privy dashboard.");I(await c.getSmartWalletClient({chain:e,privyAppId:d,paymasterContext:a?.paymasterContext,rpcConfig:g,account:w,signer:await(y?.getEthereumProvider()),user:f,smartWalletsConfig:u}))})()}),[!!u?.enabled,!!f?.smartWallet,!!y,!!w]);/*#__PURE__*/return e.jsx(h.Provider,{value:{client:p,config:a,getClientForChain:async({id:e})=>{let r=await c.getSmartWalletClient({chain:q.find((r=>r.id===e)),privyAppId:d,paymasterContext:a?.paymasterContext,rpcConfig:g,account:w,signer:await(y?.getEthereumProvider()),user:f,smartWalletsConfig:u});if(!r)throw new n.PrivyClientError(`Failed to create smart wallet client for chain id: ${e}`);return v(r)}},children:l})},h=/*#__PURE__*/r.createContext({client:void 0,config:void 0,getClientForChain:n.notImplemented}),q=({children:t})=>{let{client:o,config:l,getClientForChain:u}=(()=>{let{client:e,config:i,getClientForChain:t}=r.useContext(h);return{client:e,config:i,getClientForChain:t}})(),{config:d}=s(),{wrapSmartAccountClient:q}=c.useSmartWalletsWrapper({clientConfig:l,smartWalletsConfig:d}),{user:C}=i.usePrivyContext(),{generateSiweMessageForSmartWallet:g,linkSmartWallet:m,hideWalletUIs:f}=n.usePrivyInternal();return r.useEffect((()=>{(async()=>{if(o&&C&&!C?.smartWallet&&d?.enabled)try{let e=await g({address:o.account.address,chainId:`eip155:${o.chain.id}`});f.current=!0;let r=await o.signMessage({message:e});await m({signature:r,message:e,smartWalletType:d.smartWalletType,smartWalletVersion:d.smartWalletVersion})}catch(e){console.error("Error creating smart wallet:",e)}finally{f.current=!1}})()}),[!!o,!!C?.smartWallet,!!d?.enabled]),/*#__PURE__*/e.jsx(a.Provider,{value:{client:C?.smartWallet&&o?q(o):void 0,getClientForChain:u},children:t})};exports.SmartWalletsProvider=({config:r,children:i})=>/*#__PURE__*/e.jsx(u,{children:/*#__PURE__*/e.jsx(d,{config:r,children:/*#__PURE__*/e.jsx(q,{children:i})})}),exports.useSmartWallets=()=>{let{client:e,getClientForChain:i}=r.useContext(a);return{client:e,getClientForChain:i}};