UNPKG

leumas-private-shared

Version:

Private React JSX Package For Leumas Shared Components, Headers, Footers, Asides, Login Pages, API Key Manager and much more. Styles and everything reusable to avoid DRY code across all of our subdomains

29 lines (21 loc) 991 B
import { useEffect } from 'react'; const useMetaMaskEffect = (account, tokenContract, setUserBalance, onDataChange = () => {}, web3) => { useEffect(() => { if(account && tokenContract) { const fetchBalance = async () => { const balance = await tokenContract.methods.balanceOf(account).call(); setUserBalance(balance); }; fetchBalance(); const handleAccountsChanged = async (accounts) => { const balance = await tokenContract.methods.balanceOf(accounts[0]).call(); setUserBalance(balance); onDataChange({ account, balance: web3.utils.fromWei(balance, 'ether') }); }; window.ethereum.on('accountsChanged', handleAccountsChanged); // Cleanup to remove listener return () => window.ethereum.removeListener('accountsChanged', handleAccountsChanged); } }, [account, tokenContract, web3, setUserBalance, onDataChange]); }; export default useMetaMaskEffect;