import {useCallback, useEffect, useState} from 'react'; import {BigNumber} from 'ethers'; import ERC20 from '../unicorn-finance/ERC20'; import useUnicornFinance from './useUnicornFinance'; import config from '../config'; const useTokenBalance = (token: ERC20) => { const [balance, setBalance] = useState(BigNumber.from(0)); const unicornFinance = useUnicornFinance(); const isUnlocked = unicornFinance?.isUnlocked; const fetchBalance = useCallback(async () => { setBalance(await token.balanceOf(unicornFinance.myAccount)); }, [token, unicornFinance.myAccount]); useEffect(() => { if (isUnlocked) { fetchBalance().catch((err) => console.error(`Failed to fetch token balance: ${err.stack}`)); let refreshInterval = setInterval(fetchBalance, config.refreshInterval); return () => clearInterval(refreshInterval); } }, [isUnlocked, token, fetchBalance, unicornFinance]); return balance; }; export default useTokenBalance;