Estoy desarrollando una dApp usando la biblioteca web3. En algún caso, el usuario tiene que decidir cómo quiere conectarse, ya sea MetaMask o WalletConnect.
Entonces, cuando el usuario decide conectarse con WalletConnect, no hay problema con la conexión en sí, pero tengo un problema cuando quiero interactuar con Smart Contract. Supongamos que quiero aprobar la cantidad del usuario para apostar o consultar el saldo.
export const schooseProvider = provider => { // debugger console.log("schooseProvider: ", provider ); if(provider === "MetaMask"){ console.log("Selected Provider: ", window.ethereum) W3 = new Web3(window.ethereum) } else if(provider === "WalletConnect"){ const provider = new WalletConnectProvider({ infuraId: '20c6beb49cd1402db84120a858bc74af', bridge: 'https://bridge.walletconnect.org', supportedChainIds, rpc: { 3: 'https://ropsten.infura.io/v3/20c6beb49cd1402db84120a858bc74af' } }) console.log("Selected Provider: ", provider) W3 = new Web3(provider) } } export const approve = async (account) => { try{ store.dispatch(updateAproveButtonsLoader(true)) await contract.methods.approve(stakeAddress,'10000000000000000000000000000000000000000000000000').send({from: account}) .once('receipt', function(receipt){ store.dispatch(updateApproveButtonsLoader(false)) store.dispatch(updateApproved(true)) checkAllowence(account) }) .on('error', () => { store.dispatch(updateApproveButtonsLoader(false)) }) } catch(error){ store.dispatch(updateApproveButtonsLoader(false)) console.log(error) } }