Skip to content

Commit f1628b5

Browse files
committed
univ3 - mint form - calc low/high price by tick
1 parent 7ed4d07 commit f1628b5

File tree

2 files changed

+46
-26
lines changed

2 files changed

+46
-26
lines changed

src/front/shared/pages/Exchange/QuickSwap/univ3/MintPosition.tsx

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -308,33 +308,48 @@ function MintPosition(props) {
308308
const getTokenSymbolFromViewSideB = () => {
309309
return (viewSide == VIEW_SIDE.A_TO_B) ? getTokenSymbol(TOKEN._1) : getTokenSymbol(TOKEN._0)
310310
}
311-
312-
useEffect(() => {
313-
console.group('>>>> DEBUG PRICES')
314-
console.table({
315-
startPrice,
316-
token0LowerPrice,
317-
token0HighPrice,
318-
token1LowerPrice,
319-
token1HighPrice,
311+
312+
const calcPriceByTick = (token: TOKEN, isLowerPrice: boolean) => {
313+
const price = (
314+
(token == TOKEN._0)
315+
? (isLowerPrice) ? token0LowerPrice : token0HighPrice
316+
: (isLowerPrice) ? token1LowerPrice : token1HighPrice
317+
)
318+
const priceInfo = actions.uniswap.getPriceRoundedToTick({
319+
fee: activeFee,
320+
price,
321+
Decimal0: (token == TOKEN._0) ? token0.decimals : token1.decimals,
322+
Decimal1: (token == TOKEN._0) ? token1.decimals : token0.decimals,
323+
isLowerPrice: (token == TOKEN._0),
320324
})
321-
/*
322-
console.group('TOKEN 0')
323-
console.table(token0)
324-
console.groupEnd()
325-
console.group('TOKEN 1')
326-
console.table(token1)
327-
console.groupEnd()*/
328-
console.groupEnd()
329-
}, [
330-
token0LowerPrice,
331-
token1LowerPrice,
332-
token0HighPrice,
333-
token1HighPrice,
334-
startPrice
335-
])
336-
337-
325+
326+
const {
327+
price: {
328+
buyOneOfToken0,
329+
buyOneOfToken1,
330+
},
331+
tick,
332+
} = priceInfo
333+
334+
if (token == TOKEN._0) {
335+
if (isLowerPrice) {
336+
setToken0LowerPrice(Number(buyOneOfToken1))
337+
setToken1HighPrice(Number(buyOneOfToken0))
338+
} else {
339+
setToken0HighPrice(Number(buyOneOfToken1))
340+
setToken1LowerPrice(Number(buyOneOfToken0))
341+
}
342+
} else {
343+
if (isLowerPrice) {
344+
setToken1LowerPrice(Number(buyOneOfToken1))
345+
setToken0HighPrice(Number(buyOneOfToken0))
346+
} else {
347+
setToken1HighPrice(Number(buyOneOfToken1))
348+
setToken0LowerPrice(Number(buyOneOfToken0))
349+
}
350+
}
351+
}
352+
338353
const isBaseFetching = (isFetchTokensInfo || isPoolsByFeeFetching)
339354

340355

@@ -417,6 +432,7 @@ function MintPosition(props) {
417432
onChange={(v) => { setLowerPrice(v, getTokenFromViewSide()) }}
418433
tokenA={getTokenSymbolFromViewSideA()}
419434
tokenB={getTokenSymbolFromViewSideB()}
435+
onBlur={() => { calcPriceByTick((viewSide == VIEW_SIDE.A_TO_B) ? TOKEN._0 : TOKEN._1, true)}}
420436
label={(
421437
<FormattedMessage id="uni_mint_lower_price" defaultMessage="Low price" />
422438
)}
@@ -426,6 +442,7 @@ function MintPosition(props) {
426442
onChange={(v) => { setHightPrice(v, getTokenFromViewSide()) }}
427443
tokenA={getTokenSymbolFromViewSideA()}
428444
tokenB={getTokenSymbolFromViewSideB()}
445+
onBlur={() => { calcPriceByTick((viewSide == VIEW_SIDE.A_TO_B) ? TOKEN._0 : TOKEN._1, false)}}
429446
label={(
430447
<FormattedMessage id="uni_mint_high_price" defaultMessage="High price" />
431448
)}

src/front/shared/pages/Exchange/QuickSwap/univ3/ui/PriceInput.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ type PriceInputProps = {
77
label: any,
88
disabled?: boolean
99
onChange: (amount:number) => void
10+
onBlur?: () => void
1011
tokenA: string,
1112
tokenB: string,
1213
}
@@ -16,6 +17,7 @@ const PriceInput = (props: PriceInputProps) => {
1617
label = false,
1718
disabled = false,
1819
onChange = (v: number) => {},
20+
onBlur = () => {},
1921
tokenA = 'A',
2022
tokenB = 'B',
2123
} = props
@@ -29,6 +31,7 @@ const PriceInput = (props: PriceInputProps) => {
2931
value={price}
3032
disabled={disabled}
3133
placeholder="0"
34+
onBlur={() => { onBlur() }}
3235
onChange={(e) => { onChange(Number(e.target.value)) }}
3336
/>
3437
<span>

0 commit comments

Comments
 (0)