import {useCallback} from 'react'; import useUnicornFinance from './useUnicornFinance'; import useHandleTransactionReceipt from './useHandleTransactionReceipt'; import {Bank} from '../unicorn-finance'; import useEarningsAll from './useEarningsAll'; const useCompoundAll = (banks: Bank[]) => { const unicornFinance = useUnicornFinance(); const earnings = useEarningsAll(banks); const handleTransactionReceipt = useHandleTransactionReceipt(); const handleReward = useCallback(async () => { let nodesToCompound = [] for (let i = 0; i < banks.length; i++) { const bank = banks[i] const nodePrice = await unicornFinance.getNodePrice(bank.contract, bank.poolId) const nodeEarnings = earnings.get(`${bank.contract}-${bank.poolId}`) if (!nodeEarnings.eq(0) && Number(nodeEarnings) >= Number(nodePrice)) { nodesToCompound.push(bank) } } Promise.all( nodesToCompound .map((bank: Bank) => { handleTransactionReceipt( unicornFinance.compound(bank.contract, bank.poolId, bank.sectionInUI), `Compound ${bank.earnTokenName} from ${bank.contract}`, ); }), ); }, [banks, earnings, unicornFinance, handleTransactionReceipt]); return handleReward; }; export default useCompoundAll;