import React, { useMemo } from 'react' import dayjs from 'dayjs' import styled from 'styled-components' import BigNumber from 'bignumber.js' import { Button, Flex, Heading, IconButton, AddIcon, MinusIcon, useModal } from '@pancakeswap/uikit' import { getBalanceNumber } from 'utils/formatBalance' import { useBoardsFromPid } from 'state/hooks' import { useTranslation } from 'contexts/Localization' import useToast from 'hooks/useToast' import DepositModal from '../DepositModal' import useStakeBoard from '../../hooks/useStakeBoard' import useUnstakeBoard, { useUnstakeForceBoard } from '../../hooks/useUnstakeBoard' import WithdrawModal from '../WithdrawModal' interface NodeCardActionsProps { stakedBalance?: BigNumber tokenBalance?: BigNumber tokenName?: string pid?: number } const IconButtonWrapper = styled.div` display: flex; svg { width: 20px; } ` const StakeAction: React.FC = ({ stakedBalance, tokenBalance, tokenName, pid }) => { const { t } = useTranslation() const { toastWarning } = useToast() const { onStake } = useStakeBoard(pid) const { onUnstake } = useUnstakeBoard(pid) const { onUnstake: onUnstakeForce } = useUnstakeForceBoard(pid) const { tokenDecimals = 18, minStakeAmount, userData } = useBoardsFromPid(pid) const rawStakedBalance = getBalanceNumber(stakedBalance, tokenDecimals, 8) const minStakedAmount = useMemo(() => { const minAmount = minStakeAmount - getBalanceNumber(userData.stakedBalance, tokenDecimals) return minAmount < 0 ? new BigNumber(0) : new BigNumber(minAmount) }, [userData, minStakeAmount, tokenDecimals]) const [onPresentDeposit] = useModal( , ) const [onPresentWithdraw] = useModal( , ) const handleUnstake = () => { const unlockTime = userData.unlockTime * 1000 if (unlockTime > new Date().getTime()) { onUnstakeForce() } else { onUnstake() } } const renderStakingButtons = () => { return rawStakedBalance === 0 ? ( ) : ( {userData.stakedBalance > 0 ? ( ) : ( )} ) } return ( {rawStakedBalance} {renderStakingButtons()} ) } export default StakeAction