UNPKG

@privy-io/wagmi

Version:

Wagmi bindings for the react client

2 lines (1 loc) 1.81 kB
"use strict";var e=require("react"),t=require("wagmi"),n=require("wagmi/connectors"),a=require("@privy-io/react-auth");let r=async(e,t)=>{let a=await Promise.all(e.map((async e=>{let a=await e.getEthereumProvider(),r=t.connectors.find((t=>t.id===e.meta.id));if(r)return r;let c=n.injected({target:{provider:a,id:e.meta.id,name:e.meta.name,icon:e.meta.icon}});return t._internal.connectors.setup(c)})));return t._internal.connectors.setState(a),a},c=e=>{e._internal.connectors.setState([]),e.setState((e=>({chainId:e.chainId,connections:new Map,current:null,status:"disconnected"})))},i=async(e,t,n)=>{await Promise.all([n.storage?.removeItem(`${e.meta.id}.disconnected`),n.storage?.setItem("recentConnectorId",t.id)]);let a=Number(e.chainId.replace("eip155:",""));n.chains.find((e=>e.id===a))||(a=n.chains[0].id);let r=new Map([[t.uid,{accounts:[e.address],chainId:a,connector:t}]]);n.setState((e=>({...e,chainId:a,connections:r,current:t.uid,status:"connected"})))};exports.useSyncPrivyWallets=({setActiveWalletForWagmi:n})=>{let{wallets:s,ready:o}=a.useWallets(),{user:l}=a.usePrivy(),d=t.useConfig(),{reconnect:u}=t.useReconnect();a.useConnectWallet({onSuccess:async({wallet:e})=>{await(d.storage?.removeItem(`${e.meta.id}.disconnected`)),n||(await(d.storage?.setItem("recentConnectorId",e.meta.id)),u())}}),a.useLogin({onComplete:async({user:e,loginAccount:t})=>{t&&"wallet"!==t.type&&e.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType))&&(await(d.storage?.removeItem("io.privy.wallet.disconnected")),u())}}),e.useEffect((()=>{n&&(async()=>{let e=n({wallets:s,user:l});if(!e)return c(d),void u();let[t]=await r([e],d);t?(await i(e,t,d),u()):console.error(`Failed to setup connector for ${e.address}`)})()}),[s,l,n]),e.useEffect((()=>{n||r(s,d).then((()=>{o&&u()}))}),[s,!n,o])};