CLV Extension Wallet injected into web pages a varible, which named 'clover'. DApp developer could integrate with the wallet with window.clover. Below snippet shows how to use it to interact between dapp and the wallet.
constexample=async () => {// connect to wallet and get accountsconstaccounts=awaitwindow.clover.request({ method:'eth_requestAccounts' })// the first account is the selected accountconstcurrAccount= accounts[0]// get chain idconstchainId=awaitwindow.clover.request({ method:'eth_chainId' });consttransactionParameters= { nonce:'0x05', gasPrice:'0x3e95ba80',// could set by user gas:'0x2710',// could set by user to:'0x66cb476bdbd6b55804644072255a1156e6977b23', from: currAccount, value:'0x2386f26fc10000', chainId: chainId, };consttxHash=awaitwindow.clover.request({ method:'eth_sendTransaction', params: [transactionParameters], });}consthandleAccountsChanged=async (accounts) => {// here could set current account with accounts[0]}window.clover.on('accountsChanged', handleAccountsChanged);consthandleChainChanged=async (chainId) => {// do something when chain changed}window.clover.on('chainChanged', handleChainChanged)
CLV Extension Wallet supports dApp to add custom EVM chain and will support to switch to specified EVM Chain(from version 5.6.0 which will release soon). Below sample code shows how dApp to do these two operations.
// Add custom EVM chain, if the chain exists in wallet, it will switch to the chain.if (window.clover) {try {awaitwindow.clover.request({ method:'wallet_addEthereumChain', params: [ { chainId:'0x400', chainName:'CLV ParaChain', nativeCurrency: { name:'CLV', symbol:'CLV', decimals:18, }, rpcUrls: ['https://api-para.clover.finance'], blockExplorerUrls: ['https://clvscan.com/'], }, ]})returntrue } catch (error) { }}// Switch to specific EVM chain, if the chain does not exist in wallet yet, it // will throw error 4902if (window.clover) {try {awaitwindow.clover.request({ method:'wallet_switchEthereumChain', params: [{ chainId:'0x400' }],// chainId must be in hexadecimal numbers }); } catch (error) {if (error.code ===4902) {// could add chain here } }}
Integrated with web3-react
First, install clover connector as dependency to your project:
npm i @clover-network/clover-connectoror yarn add @clover-network/clover-connector
Second, Web3ReactProvider and getLibrary should be used as provider as below: