Commit c9db5fb2 authored by Moody Salem's avatar Moody Salem Committed by GitHub

Change slippage calculation in trade page as discussed (#756)

* Change slippage calculation in trade page as discussed

* Revert test change

* Fix the missing import
parent 1cbf6787
...@@ -28,8 +28,8 @@ import { ...@@ -28,8 +28,8 @@ import {
calculateGasMargin, calculateGasMargin,
getEtherscanLink, getEtherscanLink,
getRouterContract, getRouterContract,
basisPointsToPercent,
QueryParams, QueryParams,
calculateSlippageAmount,
getSigner getSigner
} from '../../utils' } from '../../utils'
import Copy from '../AccountDetails/Copy' import Copy from '../AccountDetails/Copy'
...@@ -339,16 +339,11 @@ function ExchangePage({ sendingInput = false, history, params }: ExchangePagePro ...@@ -339,16 +339,11 @@ function ExchangePage({ sendingInput = false, history, params }: ExchangePagePro
const slippageAdjustedAmounts: { [field: number]: TokenAmount } = { const slippageAdjustedAmounts: { [field: number]: TokenAmount } = {
[independentField]: parsedAmounts[independentField], [independentField]: parsedAmounts[independentField],
[dependentField]: parsedAmounts[dependentField] [dependentField]:
parsedAmounts[dependentField] && trade
? tradeType === TradeType.EXACT_INPUT ? tradeType === TradeType.EXACT_INPUT
? new TokenAmount( ? trade.minimumAmountOut(basisPointsToPercent(allowedSlippage))
tokens[dependentField], : trade.maximumAmountIn(basisPointsToPercent(allowedSlippage))
calculateSlippageAmount(parsedAmounts[dependentField], allowedSlippage)[0]
)
: new TokenAmount(
tokens[dependentField],
calculateSlippageAmount(parsedAmounts[dependentField], allowedSlippage)[1]
)
: undefined : undefined
} }
...@@ -1307,7 +1302,7 @@ function ExchangePage({ sendingInput = false, history, params }: ExchangePagePro ...@@ -1307,7 +1302,7 @@ function ExchangePage({ sendingInput = false, history, params }: ExchangePagePro
<TYPE.black fontWeight={400} fontSize={14} color={theme.text2}> <TYPE.black fontWeight={400} fontSize={14} color={theme.text2}>
Set slippage tolerance Set slippage tolerance
</TYPE.black> </TYPE.black>
<QuestionHelper text="Your transaction will revert if the price changes more than this amount after you submit your trade." /> <QuestionHelper text="Your transaction will revert if the execution price changes by more than this amount after you submit your trade." />
</RowFixed> </RowFixed>
<SlippageTabs <SlippageTabs
rawSlippage={allowedSlippage} rawSlippage={allowedSlippage}
......
...@@ -11,7 +11,7 @@ import { ROUTER_ADDRESS, SUPPORTED_THEMES } from '../constants' ...@@ -11,7 +11,7 @@ import { ROUTER_ADDRESS, SUPPORTED_THEMES } from '../constants'
import ERC20_ABI from '../constants/abis/erc20.json' import ERC20_ABI from '../constants/abis/erc20.json'
import ERC20_BYTES32_ABI from '../constants/abis/erc20_bytes32.json' import ERC20_BYTES32_ABI from '../constants/abis/erc20_bytes32.json'
import { JSBI, TokenAmount } from '@uniswap/sdk' import { JSBI, Percent, TokenAmount } from '@uniswap/sdk'
export function isAddress(value: any): string | false { export function isAddress(value: any): string | false {
try { try {
...@@ -107,6 +107,11 @@ export function calculateGasMargin(value: BigNumber): BigNumber { ...@@ -107,6 +107,11 @@ export function calculateGasMargin(value: BigNumber): BigNumber {
return value.mul(BigNumber.from(10000).add(BigNumber.from(1000))).div(BigNumber.from(10000)) // add 10% return value.mul(BigNumber.from(10000).add(BigNumber.from(1000))).div(BigNumber.from(10000)) // add 10%
} }
// converts a basis points value to a sdk percent
export function basisPointsToPercent(num: number): Percent {
return new Percent(JSBI.BigInt(num), JSBI.BigInt(10000))
}
export function calculateSlippageAmount(value: TokenAmount, slippage: number): [JSBI, JSBI] { export function calculateSlippageAmount(value: TokenAmount, slippage: number): [JSBI, JSBI] {
if (slippage < 0 || slippage > 10000) { if (slippage < 0 || slippage > 10000) {
throw Error(`Unexpected slippage value: ${slippage}`) throw Error(`Unexpected slippage value: ${slippage}`)
......
...@@ -3092,10 +3092,10 @@ ...@@ -3092,10 +3092,10 @@
resolved "https://registry.yarnpkg.com/@uniswap/lib/-/lib-1.1.1.tgz#0afd29601846c16e5d082866cbb24a9e0758e6bc" resolved "https://registry.yarnpkg.com/@uniswap/lib/-/lib-1.1.1.tgz#0afd29601846c16e5d082866cbb24a9e0758e6bc"
integrity sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg== integrity sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg==
"@uniswap/sdk@^2.0.3": "@uniswap/sdk@^2.0.4":
version "2.0.3" version "2.0.4"
resolved "https://registry.yarnpkg.com/@uniswap/sdk/-/sdk-2.0.3.tgz#a9ec8059d40d8ccd49183938bec5f194018336af" resolved "https://registry.yarnpkg.com/@uniswap/sdk/-/sdk-2.0.4.tgz#19392e166e8306c26809d83d03ad06b8bcf91f95"
integrity sha512-Re2fFehHtA8KBAD+PxUEah94Rgtm4A516jP+AcGiJ5dVUp8MzkR59RMqoEW6NX4lR8calwl9YwKOhnmLiUY9jQ== integrity sha512-5M0ov0orjoCnLBy1TycxQjJdWLnxhM2ChZPRIipI8c0S1RtRchMHNmRlEdyfmIeBCvyjse4OqEF30DxR4ZL6dg==
dependencies: dependencies:
"@ethersproject/address" "^5.0.0-beta.134" "@ethersproject/address" "^5.0.0-beta.134"
"@ethersproject/contracts" "^5.0.0-beta.143" "@ethersproject/contracts" "^5.0.0-beta.143"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment