import React, { useState, useCallback, useMemo } 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 { 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 accountData?: string } const CardActions: React.FC = ({ board, accountData }) => { const { t } = useTranslation() const [requestedApproval, setRequestedApproval] = useState(false) const pid = board.pid const { allowance, tokenBalance, stakedBalance, estimatedProfit } = useBoardUser(pid) const isApproved = accountData && allowance && allowance.isGreaterThan(0) const tokenContract = useERC20(getAddress(board.tokenAddresses)) const { onApprove } = useApproveBoard(tokenContract, pid) const { account } = useWeb3React() 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) useMemo(() => { setTotalPrice(getBalanceAmount(new BigNumber(board?.userData?.receiveReward)).toNumber() + Number(displayBalance)) }, [board]) const renderApprovalOrStakeButton = () => { return isApproved ? ( <> {t('Unclaimed income')} {displayBalance} {(Number(hccPriceUsdt.toNumber().toFixed(3)) * Number(displayBalance)).toFixed(3)} USDT {/* */} {/* {board.tokenSymbol} {t('Staked')} */} {/* */} {/* {t('Unclaimed income')} */} {/* */} {/* */} ) : ( ) } return {!accountData ? : renderApprovalOrStakeButton()} } export default CardActions