import React, { useState, useCallback, useMemo, useEffect } from 'react' import BigNumber from 'bignumber.js' import styled from 'styled-components' import { provider as ProviderType } from 'web3-core' import { getAddress } from 'utils/addressHelpers' import { Button, Flex, Text } from '@pancakeswap/uikit' import { useTranslation } from 'contexts/Localization' import { Boards } from 'state/types' import { useBoardUser, usePriceCakeBusd, usePriceHccUsdt } from 'state/hooks' import { TOKEN_SYMBOL } from 'config/index' import { useWeb3React } from '@web3-react/core' import { useAccount } from 'state/userInfo/hooks' import { BIG_ZERO } from 'utils/bigNumber' import { getBalanceNumber, getBalanceAmount } from 'utils/formatBalance' import { useERC20 } from 'hooks/useContract' import UnlockButton from 'components/UnlockButton' import useApproveBoard from '../../hooks/useApproveBoard' import StakeAction from './StakeAction' import HarvestAction from './HarvestAction' import useHarvestBoard from '../../hooks/useHarvestBoard' import FlexText from './FlexText' const Action = styled.div` padding-top: 4px; ` const PriceCoin = styled.div` text-align: right; ` interface NodeCardActionsProps { board: Boards provider?: ProviderType account?: string } const CardActions: React.FC = ({ board, account }) => { const { t } = useTranslation() const [requestedApproval, setRequestedApproval] = useState(false) const pid = board.pid const { allowance, tokenBalance, stakedBalance, estimatedProfit } = useBoardUser(pid) const isApproved = account && allowance && allowance.isGreaterThan(0) const tokenContract = useERC20(getAddress(board.tokenAddresses)) const { onApprove } = useApproveBoard(tokenContract, pid) const rawEarningsBalance = account ? getBalanceAmount(new BigNumber(estimatedProfit)).toNumber() : BIG_ZERO const displayBalance = rawEarningsBalance.toFixed(3, BigNumber.ROUND_DOWN) const hccPriceUsdt = usePriceHccUsdt() const handleApprove = useCallback(async () => { try { setRequestedApproval(true) await onApprove() setRequestedApproval(false) } catch (e) { console.error(e) } }, [onApprove]) // const [totalPrice, setTotalPrice] = useState(0) const totalPrice = useMemo(() => { return getBalanceAmount(new BigNumber(board?.userData?.receiveReward)).toNumber() + Number(displayBalance) }, [board]) const renderApprovalOrStakeButton = () => { return isApproved ? ( <> {t('Unclaimed income')} {displayBalance} {hccPriceUsdt ? (hccPriceUsdt * Number(displayBalance)).toFixed(3) : 0} USDT {/* */} {/* {board.tokenSymbol} {t('Staked')} */} {/* */} {/* {t('Unclaimed income')} */} {/* */} {/* */} ) : ( ) } return {!account ? : renderApprovalOrStakeButton()} } export default CardActions