@@ -29,6 +29,7 @@ import { HumanTokenAmountWithAddress } from '@/lib/modules/tokens/token.types'
29
29
import { isUnhandledAddPriceImpactError } from '@/lib/modules/price-impact/price-impact.utils'
30
30
import { useModalWithPoolRedirect } from '../../useModalWithPoolRedirect'
31
31
import { getPoolTokens } from '../../pool.helpers'
32
+ import { useUserSettings } from '@/lib/modules/user/settings/UserSettingsProvider'
32
33
33
34
export type UseAddLiquidityResponse = ReturnType < typeof _useAddLiquidity >
34
35
export const AddLiquidityContext = createContext < UseAddLiquidityResponse | null > ( null )
@@ -39,12 +40,14 @@ export function _useAddLiquidity(urlTxHash?: Hash) {
39
40
const [ acceptPoolRisks , setAcceptPoolRisks ] = useState ( false )
40
41
const [ wethIsEth , setWethIsEth ] = useState ( false )
41
42
const [ totalUSDValue , setTotalUSDValue ] = useState ( '0' )
43
+ const [ proportionalSlippage , setProportionalSlippage ] = useState < string > ( '0' )
42
44
43
45
const { pool, refetch : refetchPool , isLoading } = usePool ( )
44
46
const { getToken, getNativeAssetToken, getWrappedNativeAssetToken, isLoadingTokenPrices } =
45
47
useTokens ( )
46
48
const { isConnected } = useUserAccount ( )
47
49
const { hasValidationErrors } = useTokenInputsValidation ( )
50
+ const { slippage : userSlippage } = useUserSettings ( )
48
51
49
52
const handler = useMemo ( ( ) => selectAddLiquidityHandler ( pool ) , [ pool . id , isLoading ] )
50
53
@@ -56,7 +59,8 @@ export function _useAddLiquidity(urlTxHash?: Hash) {
56
59
const chain = pool . chain
57
60
const nativeAsset = getNativeAssetToken ( chain )
58
61
const wNativeAsset = getWrappedNativeAssetToken ( chain )
59
-
62
+ const isForcedProportionalAdd = requiresProportionalInput ( pool . type )
63
+ const slippage = isForcedProportionalAdd ? proportionalSlippage : userSlippage
60
64
const tokens = getPoolTokens ( pool , getToken )
61
65
62
66
function setInitialHumanAmountsIn ( ) {
@@ -115,6 +119,7 @@ export function _useAddLiquidity(urlTxHash?: Hash) {
115
119
handler,
116
120
humanAmountsIn,
117
121
simulationQuery,
122
+ slippage,
118
123
} )
119
124
const transactionSteps = useTransactionSteps ( steps , isLoadingSteps )
120
125
@@ -126,7 +131,7 @@ export function _useAddLiquidity(urlTxHash?: Hash) {
126
131
const hasQuoteContext = ! ! simulationQuery . data
127
132
128
133
async function refetchQuote ( ) {
129
- if ( requiresProportionalInput ( pool . type ) ) {
134
+ if ( isForcedProportionalAdd ) {
130
135
/*
131
136
This is the only edge-case where the SDK needs pool onchain data from the frontend
132
137
(calculateProportionalAmounts uses pool.dynamicData.totalShares in its parameters)
@@ -186,6 +191,10 @@ export function _useAddLiquidity(urlTxHash?: Hash) {
186
191
addLiquidityTxHash,
187
192
hasQuoteContext,
188
193
addLiquidityTxSuccess,
194
+ slippage,
195
+ proportionalSlippage,
196
+ isForcedProportionalAdd,
197
+ setProportionalSlippage,
189
198
refetchQuote,
190
199
setHumanAmountIn,
191
200
setHumanAmountsIn,
0 commit comments