Commit 8649ddc1 authored by Noah Zinsmeister's avatar Noah Zinsmeister Committed by GitHub

hot fixes for decimal and liquidity bugs (#309)

parent eb096603
...@@ -340,7 +340,7 @@ export default function AddLiquidity() { ...@@ -340,7 +340,7 @@ export default function AddLiquidity() {
// parse input value // parse input value
useEffect(() => { useEffect(() => {
if (isNewExchange === false && inputValue && marketRate && lastEditedField === INPUT) { if (isNewExchange === false && inputValue && marketRate && lastEditedField === INPUT && decimals) {
try { try {
const parsedValue = ethers.utils.parseUnits(inputValue, 18) const parsedValue = ethers.utils.parseUnits(inputValue, 18)
...@@ -353,10 +353,12 @@ export default function AddLiquidity() { ...@@ -353,10 +353,12 @@ export default function AddLiquidity() {
const currencyAmount = marketRate const currencyAmount = marketRate
.mul(parsedValue) .mul(parsedValue)
.div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18))) .div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18)))
.div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18 - decimals)))
setOutputValueParsed(currencyAmount) setOutputValueParsed(currencyAmount)
dispatchAddLiquidityState({ dispatchAddLiquidityState({
type: 'UPDATE_DEPENDENT_VALUE', type: 'UPDATE_DEPENDENT_VALUE',
payload: { field: OUTPUT, value: amountFormatter(currencyAmount, 18, 4, false) } payload: { field: OUTPUT, value: amountFormatter(currencyAmount, decimals, 4, false) }
}) })
return () => { return () => {
...@@ -372,13 +374,13 @@ export default function AddLiquidity() { ...@@ -372,13 +374,13 @@ export default function AddLiquidity() {
setOutputError(t('inputNotValid')) setOutputError(t('inputNotValid'))
} }
} }
}, [inputValue, isNewExchange, lastEditedField, marketRate, t]) }, [inputValue, isNewExchange, lastEditedField, marketRate, decimals, t])
// parse output value // parse output value
useEffect(() => { useEffect(() => {
if (isNewExchange === false && outputValue && marketRateInverted && lastEditedField === OUTPUT) { if (isNewExchange === false && outputValue && marketRateInverted && lastEditedField === OUTPUT && decimals) {
try { try {
const parsedValue = ethers.utils.parseUnits(outputValue, 18) const parsedValue = ethers.utils.parseUnits(outputValue, decimals)
if (parsedValue.lte(ethers.constants.Zero) || parsedValue.gte(ethers.constants.MaxUint256)) { if (parsedValue.lte(ethers.constants.Zero) || parsedValue.gte(ethers.constants.MaxUint256)) {
throw Error() throw Error()
...@@ -388,7 +390,8 @@ export default function AddLiquidity() { ...@@ -388,7 +390,8 @@ export default function AddLiquidity() {
const currencyAmount = marketRateInverted const currencyAmount = marketRateInverted
.mul(parsedValue) .mul(parsedValue)
.div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18))) .div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(decimals)))
setInputValueParsed(currencyAmount) setInputValueParsed(currencyAmount)
dispatchAddLiquidityState({ dispatchAddLiquidityState({
type: 'UPDATE_DEPENDENT_VALUE', type: 'UPDATE_DEPENDENT_VALUE',
...@@ -408,7 +411,7 @@ export default function AddLiquidity() { ...@@ -408,7 +411,7 @@ export default function AddLiquidity() {
setInputError(t('inputNotValid')) setInputError(t('inputNotValid'))
} }
} }
}, [outputValue, isNewExchange, lastEditedField, marketRateInverted, t]) }, [outputValue, isNewExchange, lastEditedField, marketRateInverted, decimals, t])
// input validation // input validation
useEffect(() => { useEffect(() => {
...@@ -420,14 +423,14 @@ export default function AddLiquidity() { ...@@ -420,14 +423,14 @@ export default function AddLiquidity() {
} }
} }
if (outputValueParsed && outputBalance) { if (outputValueMax && outputBalance) {
if (outputValueParsed.gt(outputBalance)) { if (outputValueMax.gt(outputBalance)) {
setOutputError(t('insufficientBalance')) setOutputError(t('insufficientBalance'))
} else { } else {
setOutputError(null) setOutputError(null)
} }
} }
}, [inputValueParsed, inputBalance, outputValueParsed, outputBalance, t]) }, [inputValueParsed, inputBalance, outputValueMax, outputBalance, t])
const allowance = useAddressAllowance(account, outputCurrency, exchangeAddress) const allowance = useAddressAllowance(account, outputCurrency, exchangeAddress)
const [showUnlock, setShowUnlock] = useState(false) const [showUnlock, setShowUnlock] = useState(false)
......
...@@ -142,13 +142,13 @@ export default function RemoveLiquidity() { ...@@ -142,13 +142,13 @@ export default function RemoveLiquidity() {
: undefined : undefined
const ethWithdrawn = const ethWithdrawn =
ETHPer && ETHPer && valueParsed
valueParsed && ? ETHPer.mul(valueParsed).div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18)))
ETHPer.mul(valueParsed).div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18))) : undefined
const tokenWithdrawn = const tokenWithdrawn =
tokenPer && tokenPer && valueParsed
valueParsed && ? tokenPer.mul(valueParsed).div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18)))
tokenPer.mul(valueParsed).div(ethers.utils.bigNumberify(10).pow(ethers.utils.bigNumberify(18))) : undefined
const ethWithdrawnMin = ethWithdrawn ? calculateSlippageBounds(ethWithdrawn).minimum : undefined const ethWithdrawnMin = ethWithdrawn ? calculateSlippageBounds(ethWithdrawn).minimum : undefined
const tokenWithdrawnMin = tokenWithdrawn ? calculateSlippageBounds(tokenWithdrawn).minimum : undefined const tokenWithdrawnMin = tokenWithdrawn ? calculateSlippageBounds(tokenWithdrawn).minimum : undefined
...@@ -284,20 +284,20 @@ export default function RemoveLiquidity() { ...@@ -284,20 +284,20 @@ export default function RemoveLiquidity() {
</OversizedPanel> </OversizedPanel>
<CurrencyInputPanel <CurrencyInputPanel
title={t('output')} title={t('output')}
description={ethWithdrawn && tokenWithdrawn ? `(${t('estimated')})` : ''} description={ethWithdrawnMin && tokenWithdrawnMin ? `(${t('estimated')})` : ''}
key="remove-liquidity-input" key="remove-liquidity-input"
renderInput={() => renderInput={() =>
ethWithdrawn && tokenWithdrawn ? ( ethWithdrawnMin && tokenWithdrawnMin ? (
<div className="remove-liquidity__output"> <div className="remove-liquidity__output">
<div className="remove-liquidity__output-text">{`${amountFormatter( <div className="remove-liquidity__output-text">{`${amountFormatter(
ethWithdrawn, ethWithdrawnMin,
18, 18,
4, 4,
false false
)} ETH`}</div> )} ETH`}</div>
<div className="remove-liquidity__output-plus"> + </div> <div className="remove-liquidity__output-plus"> + </div>
<div className="remove-liquidity__output-text">{`${amountFormatter( <div className="remove-liquidity__output-text">{`${amountFormatter(
tokenWithdrawn, tokenWithdrawnMin,
decimals, decimals,
Math.min(4, decimals) Math.min(4, decimals)
)} ${symbol}`}</div> )} ${symbol}`}</div>
......
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