mirror of
https://github.com/oceanprotocol/market.git
synced 2024-11-15 01:34:57 +01:00
Fix edge case calculation errors in remove liquidity screen (#586)
* switched to toFixed instead of toPrecision * add round down parameter toFixed * removed console log * added toExpPos * set decimal precision Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro> * slice price Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro> * slice price Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro> * slice ocean and dt amount Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro> * add logs Signed-off-by: mihaisc <mihai.scarlat@smartcontrol.ro> * switch to decimal Co-authored-by: mihaisc <mihai.scarlat@smartcontrol.ro>
This commit is contained in:
parent
0954613b5e
commit
4a28907fe3
@ -81,6 +81,8 @@ export default function Remove({
|
||||
const [minOceanAmount, setMinOceanAmount] = useState<string>('0')
|
||||
const [minDatatokenAmount, setMinDatatokenAmount] = useState<string>('0')
|
||||
|
||||
Decimal.set({ toExpNeg: -18, precision: 18, rounding: 1 })
|
||||
|
||||
async function handleRemoveLiquidity() {
|
||||
setIsLoading(true)
|
||||
try {
|
||||
@ -157,12 +159,18 @@ export default function Remove({
|
||||
])
|
||||
|
||||
useEffect(() => {
|
||||
const minOceanAmount =
|
||||
(Number(amountOcean) * (100 - Number(slippage))) / 100
|
||||
const minDatatokenAmount =
|
||||
(Number(amountDatatoken) * (100 - Number(slippage))) / 100
|
||||
setMinOceanAmount(`${minOceanAmount}`)
|
||||
setMinDatatokenAmount(`${minDatatokenAmount}`)
|
||||
const minOceanAmount = new Decimal(amountOcean)
|
||||
.mul(new Decimal(100).minus(new Decimal(slippage)))
|
||||
.dividedBy(100)
|
||||
.toString()
|
||||
|
||||
const minDatatokenAmount = new Decimal(amountDatatoken)
|
||||
.mul(new Decimal(100).minus(new Decimal(slippage)))
|
||||
.dividedBy(100)
|
||||
.toString()
|
||||
|
||||
setMinOceanAmount(minOceanAmount.slice(0, 18))
|
||||
setMinDatatokenAmount(minDatatokenAmount.slice(0, 18))
|
||||
}, [slippage, amountOcean, amountDatatoken, isAdvanced])
|
||||
|
||||
// Set amountPoolShares based on set slider value
|
||||
@ -173,9 +181,9 @@ export default function Remove({
|
||||
const amountPoolShares = new Decimal(e.target.value)
|
||||
.dividedBy(100)
|
||||
.mul(new Decimal(poolTokens))
|
||||
.toPrecision(18) // in some cases the returned value contain more than 18 digits which break conversion to wei
|
||||
.toString()
|
||||
|
||||
setAmountPoolShares(`${amountPoolShares}`)
|
||||
setAmountPoolShares(`${amountPoolShares.slice(0, 18)}`)
|
||||
}
|
||||
|
||||
function handleMaxButton(e: ChangeEvent<HTMLInputElement>) {
|
||||
@ -185,9 +193,9 @@ export default function Remove({
|
||||
const amountPoolShares = new Decimal(amountMaxPercent)
|
||||
.dividedBy(100)
|
||||
.mul(new Decimal(poolTokens))
|
||||
.toPrecision(18)
|
||||
.toString()
|
||||
|
||||
setAmountPoolShares(`${amountPoolShares}`)
|
||||
setAmountPoolShares(`${amountPoolShares.slice(0, 18)}`)
|
||||
}
|
||||
|
||||
function handleAdvancedButton(e: FormEvent<HTMLButtonElement>) {
|
||||
|
Loading…
Reference in New Issue
Block a user