import React, {useMemo} from 'react'; import {Link} from 'react-router-dom'; import {Button, Card, CardContent, Grid, Paper, Typography} from '@material-ui/core'; import TokenSymbol from '../TokenSymbol'; import {getDisplayBalance} from '../../utils/formatBalance'; import useStatsForPool from '../../hooks/useStatsForPool'; import useEarnings from '../../hooks/useEarnings'; import useHarvest from '../../hooks/useHarvest'; import useStakedBalance from '../../hooks/useStakedBalance'; import useStakedTokenPriceInDollars from '../../hooks/useStakedTokenPriceInDollars'; import useUnicornStats from '../../hooks/useUnicornStats'; import useShareStats from '../../hooks/useWingsStats'; import {Bank} from '../../unicorn-finance'; interface DashboardInfoCardProps { bank: Bank; } const DashboardInfoCard: React.FC = ({bank}) => { const statsOnPool = useStatsForPool(bank); const earnings = useEarnings(bank.contract, bank.earnTokenName, bank.poolId); const {onReward} = useHarvest(bank); const unicornStats = useUnicornStats(); const tShareStats = useShareStats(); const tokenStats = bank.earnTokenName === 'WINGS' ? tShareStats : unicornStats; const tokenPriceInDollars = useMemo( () => (tokenStats ? Number(tokenStats.priceInDollars).toFixed(2) : null), [tokenStats], ); const earnedInToken = Number(getDisplayBalance(earnings)); const earnedInDollars = (Number(tokenPriceInDollars) * earnedInToken).toFixed(2); const stakedBalance = useStakedBalance(bank.contract, bank.poolId); const stakedInToken = Number(getDisplayBalance(stakedBalance, bank.depositToken.decimal)); const stakedTokenPriceInDollars = useStakedTokenPriceInDollars(bank.depositTokenName, bank.depositToken); const stakedInDollars = (Number(stakedTokenPriceInDollars) * stakedInToken).toFixed(2); return ( {bank.depositTokenName} {bank.closedForStaking ? ( Pool Ended Please unstake ) : ( Earn {bank.earnTokenName} )} APR {bank.closedForStaking ? '0.00' : statsOnPool?.yearlyAPR}% TVL $ {statsOnPool?.TVL ? Number(Number(statsOnPool?.TVL).toFixed(0)).toLocaleString('en-US') : '-.--'} Daily APR {bank.closedForStaking ? '0.00' : statsOnPool?.dailyAPR}% Staked 0 ? 'card-info-value' : 'card-info-value grey-text'} >{`${stakedInToken} ${bank.depositTokenName}`} Value $ 0 ? 'card-info-value' : 'card-info-value grey-text'}>{`≈$${Number( stakedInDollars, ).toLocaleString('en-US')}`} Earned 0 ? 'card-info-value' : 'card-info-value grey-text'} >{`${earnedInToken} ${bank.earnTokenName}`} Earned $ 0 ? 'card-info-value' : 'card-info-value grey-text'}>{`≈$${Number( earnedInDollars, ).toLocaleString('en-US')}`} ); }; export default DashboardInfoCard;