Skip to content

Commit

Permalink
add display deposit fee in staking modals
Browse files Browse the repository at this point in the history
  • Loading branch information
GooseAdmin committed Feb 10, 2021
1 parent 2db49bc commit e6084a0
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 7 deletions.
13 changes: 12 additions & 1 deletion src/components/TokenInput/TokenInput.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React from 'react'
import styled from 'styled-components'
import BigNumber from 'bignumber.js/bignumber'
import { Button } from '@pancakeswap-libs/uikit'
import useI18n from '../../hooks/useI18n'
import Input, { InputProps } from '../Input'
Expand All @@ -8,9 +9,10 @@ interface TokenInputProps extends InputProps {
max: number | string
symbol: string
onSelectMax?: () => void
depositFeeBP?: number
}

const TokenInput: React.FC<TokenInputProps> = ({ max, symbol, onChange, onSelectMax, value }) => {
const TokenInput: React.FC<TokenInputProps> = ({ max, symbol, onChange, onSelectMax, value, depositFeeBP = 0 }) => {
const TranslateString = useI18n()
return (
<StyledTokenInput>
Expand All @@ -33,6 +35,15 @@ const TokenInput: React.FC<TokenInputProps> = ({ max, symbol, onChange, onSelect
placeholder="0"
value={value}
/>
{
depositFeeBP > 0 ?
<StyledMaxText>
{TranslateString(10001, 'Deposit Fee')}: {new BigNumber(value || 0).times(depositFeeBP/10000).toString()} {symbol}
</StyledMaxText>
:
null
}

</StyledTokenInput>
)
}
Expand Down
2 changes: 1 addition & 1 deletion src/views/Farms/Farms.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const Farms: React.FC<FarmsProps> = (farmsProps) => {
// if (!farm.tokenAmount || !farm.lpTotalInQuoteToken || !farm.lpTotalInQuoteToken) {
// return farm
// }
const cakeRewardPerBlock = new BigNumber(farm.eggPerBlock || 1).times(new BigNumber(farm.poolWeight))
const cakeRewardPerBlock = new BigNumber(farm.eggPerBlock || 1).times(new BigNumber(farm.poolWeight)) .div(new BigNumber(10).pow(18))
const cakeRewardPerYear = cakeRewardPerBlock.times(BLOCKS_PER_YEAR)

let apy = cakePrice.times(cakeRewardPerYear);
Expand Down
4 changes: 3 additions & 1 deletion src/views/Farms/components/DepositModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@ interface DepositModalProps {
onConfirm: (amount: string) => void
onDismiss?: () => void
tokenName?: string
depositFeeBP?: number
}

const DepositModal: React.FC<DepositModalProps> = ({ max, onConfirm, onDismiss, tokenName = '' }) => {
const DepositModal: React.FC<DepositModalProps> = ({ max, onConfirm, onDismiss, tokenName = '' , depositFeeBP = 0}) => {
const [val, setVal] = useState('')
const [pendingTx, setPendingTx] = useState(false)
const TranslateString = useI18n()
Expand All @@ -40,6 +41,7 @@ const DepositModal: React.FC<DepositModalProps> = ({ max, onConfirm, onDismiss,
onChange={handleChange}
max={fullBalance}
symbol={tokenName}
depositFeeBP={depositFeeBP}
/>
<ModalActions>
<Button variant="secondary" onClick={onDismiss}>
Expand Down
4 changes: 2 additions & 2 deletions src/views/Farms/components/FarmCard/CardActionsContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ interface FarmCardActionsProps {
const CardActions: React.FC<FarmCardActionsProps> = ({ farm, ethereum, account }) => {
const TranslateString = useI18n()
const [requestedApproval, setRequestedApproval] = useState(false)
const { pid, lpAddresses, tokenAddresses, isTokenOnly } = useFarmFromPid(farm.pid)
const { pid, lpAddresses, tokenAddresses, isTokenOnly, depositFeeBP } = useFarmFromPid(farm.pid)
const { allowance, tokenBalance, stakedBalance, earnings } = useFarmUser(pid)
const lpAddress = lpAddresses[process.env.REACT_APP_CHAIN_ID]
const tokenAddress = tokenAddresses[process.env.REACT_APP_CHAIN_ID];
Expand Down Expand Up @@ -56,7 +56,7 @@ const CardActions: React.FC<FarmCardActionsProps> = ({ farm, ethereum, account }

const renderApprovalOrStakeButton = () => {
return isApproved ? (
<StakeAction stakedBalance={stakedBalance} tokenBalance={tokenBalance} tokenName={lpName} pid={pid} />
<StakeAction stakedBalance={stakedBalance} tokenBalance={tokenBalance} tokenName={lpName} pid={pid} depositFeeBP={depositFeeBP} />
) : (
<Button mt="8px" fullWidth disabled={requestedApproval} onClick={handleApprove}>
{TranslateString(999, 'Approve Contract')}
Expand Down
5 changes: 3 additions & 2 deletions src/views/Farms/components/FarmCard/StakeAction.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ interface FarmCardActionsProps {
tokenBalance?: BigNumber
tokenName?: string
pid?: number
depositFeeBP?: number
}

const IconButtonWrapper = styled.div`
Expand All @@ -23,15 +24,15 @@ const IconButtonWrapper = styled.div`
}
`

const StakeAction: React.FC<FarmCardActionsProps> = ({ stakedBalance, tokenBalance, tokenName, pid }) => {
const StakeAction: React.FC<FarmCardActionsProps> = ({ stakedBalance, tokenBalance, tokenName, pid, depositFeeBP}) => {
const TranslateString = useI18n()
const { onStake } = useStake(pid)
const { onUnstake } = useUnstake(pid)

const rawStakedBalance = getBalanceNumber(stakedBalance)
const displayBalance = rawStakedBalance.toLocaleString()

const [onPresentDeposit] = useModal(<DepositModal max={tokenBalance} onConfirm={onStake} tokenName={tokenName} />)
const [onPresentDeposit] = useModal(<DepositModal max={tokenBalance} onConfirm={onStake} tokenName={tokenName} depositFeeBP={depositFeeBP} />)
const [onPresentWithdraw] = useModal(
<WithdrawModal max={stakedBalance} onConfirm={onUnstake} tokenName={tokenName} />,
)
Expand Down

0 comments on commit e6084a0

Please sign in to comment.