import {useCallback, useEffect, useState} from 'react'; import {BigNumber} from 'ethers'; import useUnicornFinance from './useUnicornFinance'; import {ContractName} from '../unicorn-finance'; import config from '../config'; const useEarnings = (poolName: ContractName, earnTokenName: String, poolId: Number) => { const [balance, setBalance] = useState(BigNumber.from(0)); const unicornFinance = useUnicornFinance(); const isUnlocked = unicornFinance?.isUnlocked; const fetchBalance = useCallback(async () => { const balance = await unicornFinance.earnedFromBank(poolName, earnTokenName, poolId, unicornFinance.myAccount); setBalance(balance); }, [poolName, earnTokenName, poolId, unicornFinance]); useEffect(() => { if (isUnlocked) { fetchBalance().catch((err) => console.error(err.stack)); const refreshBalance = setInterval(fetchBalance, config.refreshInterval); return () => clearInterval(refreshBalance); } }, [isUnlocked, poolName, unicornFinance, fetchBalance]); return balance; }; export default useEarnings;