From dd8812c571ddc0cf5898213eab32a86ebf4820cc Mon Sep 17 00:00:00 2001 From: Dmitry Lobachevsky Date: Thu, 1 Aug 2024 16:46:43 +0200 Subject: [PATCH 1/2] fix: apply correct manual slippage during depositing refactor: split useTradingParams hook into deposit and withdraw parts --- README.md | 2 - .../core-kit/hooks/trading/deposit/index.ts | 1 + .../use-deposit-trading-params.test.ts | 138 +++++++++ .../deposit/use-deposit-trading-params.ts | 63 ++++ .../hooks/trading/deposit/use-deposit.test.ts | 22 +- .../hooks/trading/deposit/use-deposit.ts | 26 +- .../src/core-kit/hooks/trading/index.ts | 1 - .../use-max-slippage-placeholder.test.ts | 1 - .../trading/use-max-slippage-placeholder.ts | 6 +- .../trading/use-min-receive-text.test.ts | 1 - .../hooks/trading/use-min-receive-text.ts | 6 +- .../hooks/trading/use-trading-params.test.ts | 268 ------------------ .../core-kit/hooks/trading/withdraw/index.ts | 1 + .../use-withdraw-trading-params.test.ts | 129 +++++++++ .../use-withdraw-trading-params.ts} | 24 +- .../trading/withdraw/use-withdraw.test.ts | 44 +-- .../hooks/trading/withdraw/use-withdraw.ts | 14 +- .../src/core-kit/types/trading.types.ts | 2 +- packages/trading-widget/src/index.ts | 3 +- .../hooks/use-get-slippage-placeholder.ts | 12 +- .../config-provider.defaults.ts | 4 - .../config-provider/config-provider.types.ts | 2 - 22 files changed, 412 insertions(+), 358 deletions(-) create mode 100644 packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.test.ts create mode 100644 packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.ts delete mode 100644 packages/trading-widget/src/core-kit/hooks/trading/use-trading-params.test.ts create mode 100644 packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw-trading-params.test.ts rename packages/trading-widget/src/core-kit/hooks/trading/{use-trading-params.ts => withdraw/use-withdraw-trading-params.ts} (55%) diff --git a/README.md b/README.md index 077b98c..441d7ae 100644 --- a/README.md +++ b/README.md @@ -112,8 +112,6 @@ UI configuration provider. Manages params to configure custom styling, component > | `isSanctioned` | `boolean` | `false` | Restricts depositing action button and conditionally renders SanctionedAlert component | > | `depositQuoteDiffWarningThreshold` | `number` | `1` | Deposit slippage absolute percent value warning threshold, Affects styling to warn user | > | `depositQuoteDiffErrorThreshold` | `number` | `3` | Deposit slippage absolute percent value error threshold, Affects styling to warn user | -> | `defaultDepositSlippage` | `number` | `0` | Initial deposit slippage absolute percent. Further adjustments are available in panel settings | -> | `defaultDepositSlippageScale` | `number[]` | `[0]` | Initial deposit slippage absolute percent. Further adjustments are available in panel settings | > | `defaultWithdrawSlippageScale` | `number[]` | `[0.1, 0.3, 0.5, 1, 1.5, 3]` | Initial withdraw slippage absolute percent. Further adjustments are available in panel settings | > | `defaultLockTime` | `string` | `'24 hours'` | Formatted default deposit lock time to be displayed in panel (Long lockup period is used to bypass entry fee and can be managed in panel settings) | > | `customLockTime` | `string` | `'15 minutes'` | Formatted custom deposit lock time alternative to be displayed in panel | diff --git a/packages/trading-widget/src/core-kit/hooks/trading/deposit/index.ts b/packages/trading-widget/src/core-kit/hooks/trading/deposit/index.ts index 22a20e4..4c18197 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/deposit/index.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/deposit/index.ts @@ -7,3 +7,4 @@ export { useDepositQuote } from './use-deposit-quote' export { usePoolDepositAssetAddress } from './use-pool-deposit-asset-address' export { usePoolDepositTokens } from './use-pool-deposit-tokens' export { useHandlePoolDepositData } from './use-handle-pool-deposit-data' +export { useDepositTradingParams } from './use-deposit-trading-params' diff --git a/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.test.ts b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.test.ts new file mode 100644 index 0000000..346d8e7 --- /dev/null +++ b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.test.ts @@ -0,0 +1,138 @@ +import BigNumber from 'bignumber.js' +import { beforeEach } from 'vitest' + +import { DEFAULT_PRECISION, optimism } from 'core-kit/const' +import { usePoolTokenPrice } from 'core-kit/hooks/pool' +import * as stateHooks from 'core-kit/hooks/state' +import * as tradingDepositHooks from 'core-kit/hooks/trading/deposit' + +import { useAssetPrice } from 'core-kit/hooks/trading/use-asset-price' +import type { TradingToken } from 'core-kit/types' +import { TEST_ADDRESS } from 'tests/mocks' +import { renderHook } from 'tests/test-utils' + +import { useDepositTradingParams } from './use-deposit-trading-params' + +vi.mock('core-kit/hooks/state', async () => { + const actual = await vi.importActual>( + 'core-kit/hooks/state', + ) + return { + ...actual, + useReceiveTokenInput: vi.fn(), + useSendTokenInput: vi.fn(), + useTradingPanelPoolConfig: vi.fn(), + useTradingPanelSettings: vi.fn(), + } +}) + +vi.mock('core-kit/hooks/trading/deposit', () => ({ + usePoolDepositAssetAddress: vi.fn(), +})) + +vi.mock('core-kit/hooks/pool', () => ({ + usePoolTokenPrice: vi.fn(), +})) +vi.mock('core-kit/hooks/trading/use-asset-price', () => ({ + useAssetPrice: vi.fn(), +})) + +const poolConfig = { + address: TEST_ADDRESS, + chainId: optimism.id, + withdrawParams: { + customTokens: [ + { + address: TEST_ADDRESS, + method: 'withdraw', + intermediateToken: { + address: TEST_ADDRESS, + symbol: 'symbol', + value: '1', + decimals: DEFAULT_PRECISION, + }, + }, + ], + }, +} +const sendToken: TradingToken = { + address: TEST_ADDRESS, + symbol: 'send_symbol', + value: '1', + decimals: DEFAULT_PRECISION, +} +const receiveToken: TradingToken = { + address: TEST_ADDRESS, + symbol: 'receive_symbol', + value: '1', + decimals: DEFAULT_PRECISION, +} +const poolDepositAssetAddress = TEST_ADDRESS + +describe('useDepositTradingParams', () => { + beforeEach(() => { + vi.mocked(stateHooks.useTradingPanelPoolConfig).mockReturnValue( + poolConfig as ReturnType, + ) + vi.mocked(stateHooks.useSendTokenInput).mockReturnValue([ + sendToken, + vi.fn(), + ] as ReturnType) + vi.mocked(stateHooks.useReceiveTokenInput).mockReturnValue([ + receiveToken, + vi.fn(), + ] as ReturnType) + vi.mocked(tradingDepositHooks.usePoolDepositAssetAddress).mockReturnValue( + poolDepositAssetAddress, + ) + vi.mocked(stateHooks.useTradingPanelSettings).mockReturnValue([ + { slippage: 'auto' }, + ] as unknown as ReturnType) + }) + + it('should get receiveAssetAddress from receiveToken.address for depositing', () => { + const { result } = renderHook(() => useDepositTradingParams()) + + expect(result.current.receiveAssetAddress).toEqual(receiveToken.address) + }) + + it('should get poolDepositAddress from usePoolDepositAssetAddress', () => { + const { result } = renderHook(() => useDepositTradingParams()) + + expect(result.current.poolDepositAddress).toEqual(poolDepositAssetAddress) + }) + + it('should calculate receiveAssetAmount correctly when slippage is auto', () => { + const { result } = renderHook(() => useDepositTradingParams()) + + expect(result.current.receiveAssetAmount).toEqual(receiveToken.value) + }) + + it('should calculate receiveAssetAmount correctly when slippage is manual', () => { + vi.mocked(stateHooks.useTradingPanelSettings).mockReturnValue([ + { slippage: 0.1 }, + ] as unknown as ReturnType) + + vi.mocked(usePoolTokenPrice).mockReturnValue('1') + vi.mocked(useAssetPrice).mockReturnValue('10') + + const { result } = renderHook(() => useDepositTradingParams()) + + expect(usePoolTokenPrice).toHaveBeenCalledWith({ + address: TEST_ADDRESS, + chainId: optimism.id, + disabled: false, + }) + expect(useAssetPrice).toHaveBeenCalledWith({ + address: TEST_ADDRESS, + chainId: optimism.id, + disabled: false, + }) + expect(result.current.receiveAssetAmount).toEqual( + new BigNumber(sendToken.value) + .multipliedBy('10') + .dividedBy('1') + .toFixed(), + ) + }) +}) diff --git a/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.ts b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.ts new file mode 100644 index 0000000..f95fa6f --- /dev/null +++ b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit-trading-params.ts @@ -0,0 +1,63 @@ +import BigNumber from 'bignumber.js' +import { useMemo } from 'react' + +import { usePoolTokenPrice } from 'core-kit/hooks/pool' +import { + useReceiveTokenInput, + useSendTokenInput, + useTradingPanelPoolConfig, + useTradingPanelSettings, +} from 'core-kit/hooks/state' +import { usePoolDepositAssetAddress } from 'core-kit/hooks/trading/deposit' +import { useAssetPrice } from 'core-kit/hooks/trading/use-asset-price' +import type { TradingParams } from 'core-kit/types/trading.types' + +export const useDepositTradingParams = (): TradingParams => { + const { address, chainId } = useTradingPanelPoolConfig() + const [{ slippage }] = useTradingPanelSettings() + const isAutoSlippage = slippage === 'auto' + + const [sendToken] = useSendTokenInput() + const sendTokenPrice = + useAssetPrice({ + address: sendToken.address, + chainId, + disabled: isAutoSlippage, + }) ?? '' + + const [receiveToken] = useReceiveTokenInput() + const receiveAssetAddress = receiveToken.address + const receiveAssetPrice = + usePoolTokenPrice({ address, chainId, disabled: isAutoSlippage }) ?? '' + + const poolDepositAssetAddress = usePoolDepositAssetAddress({ + investAssetAddress: sendToken.address, + symbol: sendToken.symbol, + productPoolAddress: address, + chainId, + }) + const manualSlippageReceiveAssetAmount = new BigNumber(sendToken.value || '0') + .multipliedBy(sendTokenPrice) + .dividedBy(receiveAssetPrice) + .toFixed() + const receiveAssetAmount = isAutoSlippage + ? receiveToken.value + : manualSlippageReceiveAssetAmount + + return useMemo( + () => ({ + sendAssetAddress: sendToken.address, + fromTokenAmount: new BigNumber(sendToken.value || '0'), + receiveAssetAddress, + receiveAssetAmount, + poolDepositAddress: poolDepositAssetAddress, + }), + [ + sendToken.address, + sendToken.value, + receiveAssetAddress, + receiveAssetAmount, + poolDepositAssetAddress, + ], + ) +} diff --git a/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.test.ts b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.test.ts index 135b7d7..afc8078 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.test.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.test.ts @@ -10,10 +10,13 @@ import { import * as stateHooks from 'core-kit/hooks/state' import { - useTradingParams, + useIsEasySwapperTrading, useTradingSettleHandler, } from 'core-kit/hooks/trading' -import { useDepositSlippage } from 'core-kit/hooks/trading/deposit' +import { + useDepositSlippage, + useDepositTradingParams, +} from 'core-kit/hooks/trading/deposit' import { useContractFunction } from 'core-kit/hooks/web3' import type { Address, DynamicTradingToken } from 'core-kit/types' import { renderHook } from 'tests/test-utils' @@ -38,9 +41,11 @@ vi.mock('core-kit/hooks/state', () => ({ vi.mock('core-kit/hooks/trading', () => ({ useTradingSettleHandler: vi.fn(), useTradingParams: vi.fn(), + useIsEasySwapperTrading: vi.fn(), })) vi.mock('core-kit/hooks/trading/deposit', () => ({ useDepositSlippage: vi.fn(), + useDepositTradingParams: vi.fn(), })) vi.mock('core-kit/hooks/web3', () => ({ useContractFunction: vi.fn(), @@ -88,6 +93,7 @@ describe('useDeposit', () => { typeof configProviderHooks.useConfigContextParams >, ) + vi.mocked(useIsEasySwapperTrading).mockReturnValue(true) }) afterEach(() => { @@ -107,7 +113,7 @@ describe('useDeposit', () => { poolDepositAddress: '0x111' as Address, receiveAssetAddress: receiveToken.address, sendAssetAddress: sendToken.address, - receiveAssetInputValue: receiveToken.value, + receiveAssetAmount: receiveToken.value, fromTokenAmount: new BigNumber(sendToken.value), } vi.mocked(stateHooks.useTradingPanelDepositMethod).mockImplementation( @@ -130,13 +136,13 @@ describe('useDeposit', () => { vi.fn, ] as unknown as ReturnType, ) - vi.mocked(useTradingParams).mockImplementation(() => tradingParams) + vi.mocked(useDepositTradingParams).mockImplementation(() => tradingParams) const { result } = renderHook(() => useDeposit()) expect(useDepositSlippage).toHaveBeenCalledTimes(1) expect(useDepositSlippage).toHaveBeenCalledWith( - tradingParams.receiveAssetInputValue, + tradingParams.receiveAssetAmount, ) expect(useTradingSettleHandler).toHaveBeenCalledTimes(1) expect(useTradingSettleHandler).toHaveBeenCalledWith('deposit') @@ -182,7 +188,7 @@ describe('useDeposit', () => { poolDepositAddress: BRIDGED_USDC_OPTIMISM.address, receiveAssetAddress: receiveToken.address, sendAssetAddress: sendToken.address, - receiveAssetInputValue: receiveToken.value, + receiveAssetAmount: receiveToken.value, fromTokenAmount: new BigNumber(sendToken.value), } vi.mocked(stateHooks.useTradingPanelDepositMethod).mockImplementation( @@ -205,13 +211,13 @@ describe('useDeposit', () => { vi.fn, ] as unknown as ReturnType, ) - vi.mocked(useTradingParams).mockImplementation(() => tradingParams) + vi.mocked(useDepositTradingParams).mockImplementation(() => tradingParams) const { result } = renderHook(() => useDeposit()) expect(useDepositSlippage).toHaveBeenCalledTimes(1) expect(useDepositSlippage).toHaveBeenCalledWith( - tradingParams.receiveAssetInputValue, + tradingParams.receiveAssetAmount, ) expect(useTradingSettleHandler).toHaveBeenCalledTimes(1) expect(useTradingSettleHandler).toHaveBeenCalledWith('deposit') diff --git a/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.ts b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.ts index 4840f54..0c1e1ef 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/deposit/use-deposit.ts @@ -1,5 +1,6 @@ import { useCallback, useMemo } from 'react' +import { DEFAULT_DEPOSIT_SLIPPAGE } from 'core-kit/const' import { useReceiveTokenInput, useSendTokenInput, @@ -9,10 +10,13 @@ import { useTradingPanelTransactions, } from 'core-kit/hooks/state' import { - useTradingParams, + useIsEasySwapperTrading, useTradingSettleHandler, } from 'core-kit/hooks/trading' -import { useDepositSlippage } from 'core-kit/hooks/trading/deposit' +import { + useDepositSlippage, + useDepositTradingParams, +} from 'core-kit/hooks/trading/deposit' import { useContractFunction } from 'core-kit/hooks/web3' import { @@ -27,10 +31,6 @@ import { logTransactionArguments, } from 'core-kit/utils' -import { useConfigContextParams } from 'trading-widget/providers/config-provider' - -import { useIsEasySwapperTrading } from '../use-is-easy-swapper-trading' - const action = 'deposit' export const useDeposit = (): ContractActionFunc => { @@ -45,12 +45,11 @@ export const useDeposit = (): ContractActionFunc => { poolDepositAddress, receiveAssetAddress, sendAssetAddress, - receiveAssetInputValue, + receiveAssetAmount, fromTokenAmount, - } = useTradingParams() - const { defaultDepositSlippage } = useConfigContextParams() + } = useDepositTradingParams() - useDepositSlippage(receiveAssetInputValue) + useDepositSlippage(receiveAssetAmount) const isDepositNative = poolConfig.chainId && isEasySwapperDeposit @@ -69,7 +68,7 @@ export const useDeposit = (): ContractActionFunc => { receiveAssetAddress, fromTokenAmount: fromTokenAmount.shiftedBy(sendToken.decimals).toFixed(0), poolDepositAddress: depositAddress, - receiveAssetInputValue, + receiveAssetInputValue: receiveAssetAmount, } if (!isEasySwapperDeposit) { @@ -93,7 +92,7 @@ export const useDeposit = (): ContractActionFunc => { isEasySwapperDeposit, poolDepositAddress, receiveAssetAddress, - receiveAssetInputValue, + receiveAssetAmount, sendAssetAddress, sendToken.decimals, ]) @@ -117,7 +116,7 @@ export const useDeposit = (): ContractActionFunc => { logTransactionArguments(txArgs) const args: unknown[] = getOrderedTxArgs( txArgs, - slippage === 'auto' ? defaultDepositSlippage : slippage, + slippage === 'auto' ? DEFAULT_DEPOSIT_SLIPPAGE : slippage, ) if (isDepositNative) { args.push({ value: BigInt(txArgs.fromTokenAmount) }) @@ -131,6 +130,5 @@ export const useDeposit = (): ContractActionFunc => { send, txArgs, slippage, - defaultDepositSlippage, ]) } diff --git a/packages/trading-widget/src/core-kit/hooks/trading/index.ts b/packages/trading-widget/src/core-kit/hooks/trading/index.ts index 91fac4d..1b65be6 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/index.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/index.ts @@ -5,7 +5,6 @@ export { useTradingPriceDiff } from './use-trading-price-diff' export { useAssetPrice } from './use-asset-price' export { useRawAssetPrice } from './use-raw-asset-price' export { useIsTradingEnabled } from './use-is-trading-enabled' -export { useTradingParams } from './use-trading-params' export { useExchangeRate } from './use-exchange-rate' export { useHandleTrade } from './use-handle-trade' export { useMinReceiveText } from './use-min-receive-text' diff --git a/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.test.ts b/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.test.ts index 284b157..02931bd 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.test.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.test.ts @@ -15,7 +15,6 @@ vi.mock('core-kit/hooks/state', () => ({ vi.mock('trading-widget/providers/config-provider', () => ({ useConfigContextParams: vi.fn().mockReturnValue({ defaultWithdrawSlippageScale: DEFAULT_WITHDRAW_SLIPPAGE_SCALE, - defaultDepositSlippage: DEFAULT_DEPOSIT_SLIPPAGE, }), })) diff --git a/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.ts b/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.ts index acd75ea..61ecb8b 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/use-max-slippage-placeholder.ts @@ -1,5 +1,6 @@ import isNumber from 'lodash.isnumber' +import { DEFAULT_DEPOSIT_SLIPPAGE } from 'core-kit/const' import { useTradingPanelSettings, useTradingPanelType, @@ -9,8 +10,7 @@ import { useConfigContextParams } from 'trading-widget/providers/config-provider export const useMaxSlippagePlaceholder = () => { const [tradingType] = useTradingPanelType() const [{ slippage, minSlippage }] = useTradingPanelSettings() - const { defaultWithdrawSlippageScale, defaultDepositSlippage } = - useConfigContextParams() + const { defaultWithdrawSlippageScale } = useConfigContextParams() if (slippage !== 'auto') { return slippage.toString() @@ -21,7 +21,7 @@ export const useMaxSlippagePlaceholder = () => { } return tradingType === 'deposit' - ? defaultDepositSlippage.toString() + ? DEFAULT_DEPOSIT_SLIPPAGE.toString() : `auto ${defaultWithdrawSlippageScale[0]}-${ defaultWithdrawSlippageScale[defaultWithdrawSlippageScale.length - 1] }` diff --git a/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.test.ts b/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.test.ts index 18e72b1..2cab2c5 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.test.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.test.ts @@ -25,7 +25,6 @@ vi.mock('core-kit/hooks/state', () => ({ vi.mock('trading-widget/providers/config-provider', () => ({ useConfigContextParams: vi.fn().mockReturnValue({ defaultWithdrawSlippageScale: DEFAULT_WITHDRAW_SLIPPAGE_SCALE, - defaultDepositSlippageScale: DEFAULT_DEPOSIT_SLIPPAGE_SCALE, }), })) diff --git a/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.ts b/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.ts index a48ea23..197dfe2 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/use-min-receive-text.ts @@ -1,6 +1,7 @@ import BigNumber from 'bignumber.js' import isNumber from 'lodash.isnumber' +import { DEFAULT_DEPOSIT_SLIPPAGE_SCALE } from 'core-kit/const' import { useReceiveTokenInput, useTradingPanelSettings, @@ -24,8 +25,7 @@ export const useMinReceiveText = () => { const [tradingType] = useTradingPanelType() const [receiveToken] = useReceiveTokenInput() const [{ slippage, minSlippage }] = useTradingPanelSettings() - const { defaultWithdrawSlippageScale, defaultDepositSlippageScale } = - useConfigContextParams() + const { defaultWithdrawSlippageScale } = useConfigContextParams() if (tradingType === 'deposit' && slippage === 'auto') { return `${new BigNumber(receiveToken.value || 0).toFixed( @@ -42,7 +42,7 @@ export const useMinReceiveText = () => { new BigNumber(receiveToken.value || 0), isAutoSlippageWithMinValue ? minSlippage : slippage, tradingType === 'deposit' - ? defaultDepositSlippageScale + ? DEFAULT_DEPOSIT_SLIPPAGE_SCALE : defaultWithdrawSlippageScale, ) : '0' diff --git a/packages/trading-widget/src/core-kit/hooks/trading/use-trading-params.test.ts b/packages/trading-widget/src/core-kit/hooks/trading/use-trading-params.test.ts deleted file mode 100644 index 74903a0..0000000 --- a/packages/trading-widget/src/core-kit/hooks/trading/use-trading-params.test.ts +++ /dev/null @@ -1,268 +0,0 @@ -import BigNumber from 'bignumber.js' - -import { DEFAULT_PRECISION, optimism } from 'core-kit/const' -import * as stateHooks from 'core-kit/hooks/state' -import * as tradingDepositHooks from 'core-kit/hooks/trading/deposit' - -import type { TradingToken } from 'core-kit/types' -import { TEST_ADDRESS } from 'tests/mocks' -import { renderHook } from 'tests/test-utils' - -import { useTradingParams } from './use-trading-params' - -vi.mock('core-kit/hooks/state', () => ({ - useIsDepositTradingPanelType: vi.fn(), - useReceiveTokenInput: vi.fn(), - useSendTokenInput: vi.fn(), - useTradingPanelPoolConfig: vi.fn(), -})) - -vi.mock('core-kit/hooks/trading/deposit', () => ({ - usePoolDepositAssetAddress: vi.fn(), -})) - -describe('useTradingParams', () => { - it('should get receiveAssetAddress from receiveToken.address for depositing', () => { - const poolConfig = { - address: TEST_ADDRESS, - chainId: optimism.id, - withdrawParams: { - customTokens: [ - { - address: TEST_ADDRESS, - method: 'withdraw', - intermediateToken: { - address: TEST_ADDRESS, - symbol: 'symbol', - value: '1', - decimals: DEFAULT_PRECISION, - }, - }, - ], - }, - } - const isDeposit = true - const sendToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'send_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const receiveToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'receive_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const poolDepositAssetAddress = TEST_ADDRESS - - expect(isDeposit).toBe(true) - - vi.mocked(stateHooks.useTradingPanelPoolConfig).mockReturnValue( - poolConfig as ReturnType, - ) - vi.mocked(stateHooks.useIsDepositTradingPanelType).mockReturnValue( - isDeposit, - ) - vi.mocked(stateHooks.useSendTokenInput).mockReturnValue([ - sendToken, - vi.fn(), - ] as ReturnType) - vi.mocked(stateHooks.useReceiveTokenInput).mockReturnValue([ - receiveToken, - vi.fn(), - ] as ReturnType) - vi.mocked(tradingDepositHooks.usePoolDepositAssetAddress).mockReturnValue( - poolDepositAssetAddress, - ) - - const { result } = renderHook(() => useTradingParams()) - - expect(result.current.receiveAssetAddress).toEqual(receiveToken.address) - }) - - it('should get receiveAssetAddress from intermediateWithdrawTokenAddress for withdrawing with intermediate', () => { - const poolConfig = { - address: TEST_ADDRESS, - chainId: optimism.id, - withdrawParams: { - customTokens: [ - { - address: TEST_ADDRESS, - method: 'withdraw', - intermediateToken: { - address: TEST_ADDRESS, - symbol: 'symbol', - value: '1', - decimals: DEFAULT_PRECISION, - }, - }, - ], - }, - } - const isDeposit = false - const sendToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'send_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const receiveToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'receive_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const poolDepositAssetAddress = TEST_ADDRESS - - expect(isDeposit).toBe(false) - expect( - poolConfig.withdrawParams.customTokens.some( - ({ address }) => address === receiveToken.address, - ), - ).toBe(true) - - vi.mocked(stateHooks.useTradingPanelPoolConfig).mockReturnValue( - poolConfig as ReturnType, - ) - vi.mocked(stateHooks.useIsDepositTradingPanelType).mockReturnValue( - isDeposit, - ) - vi.mocked(stateHooks.useSendTokenInput).mockReturnValue([ - sendToken, - vi.fn(), - ] as ReturnType) - vi.mocked(stateHooks.useReceiveTokenInput).mockReturnValue([ - receiveToken, - vi.fn(), - ] as ReturnType) - vi.mocked(tradingDepositHooks.usePoolDepositAssetAddress).mockReturnValue( - poolDepositAssetAddress, - ) - - const { result } = renderHook(() => useTradingParams()) - - expect(result.current.receiveAssetAddress).toEqual( - poolConfig.withdrawParams.customTokens.find( - ({ address }) => address === receiveToken.address, - )?.intermediateToken?.address, - ) - }) - - it('should get sendAssetAddress and fromTokenAmount from sendToken', () => { - const poolConfig = { - address: TEST_ADDRESS, - chainId: optimism.id, - withdrawParams: { - customTokens: [ - { - address: TEST_ADDRESS, - method: 'withdraw', - intermediateToken: { - address: TEST_ADDRESS, - symbol: 'symbol', - value: '1', - decimals: DEFAULT_PRECISION, - }, - }, - ], - }, - } - const isDeposit = false - const sendToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'send_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const receiveToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'receive_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const poolDepositAssetAddress = TEST_ADDRESS - - vi.mocked(stateHooks.useTradingPanelPoolConfig).mockReturnValue( - poolConfig as ReturnType, - ) - vi.mocked(stateHooks.useIsDepositTradingPanelType).mockReturnValue( - isDeposit, - ) - vi.mocked(stateHooks.useSendTokenInput).mockReturnValue([ - sendToken, - vi.fn(), - ] as ReturnType) - vi.mocked(stateHooks.useReceiveTokenInput).mockReturnValue([ - receiveToken, - vi.fn(), - ] as ReturnType) - vi.mocked(tradingDepositHooks.usePoolDepositAssetAddress).mockReturnValue( - poolDepositAssetAddress, - ) - - const { result } = renderHook(() => useTradingParams()) - - expect(result.current.sendAssetAddress).toEqual(sendToken.address) - expect(result.current.fromTokenAmount).toEqual( - new BigNumber(sendToken.value), - ) - }) - - it('should get poolDepositAddress from usePoolDepositAssetAddress', () => { - const poolConfig = { - address: TEST_ADDRESS, - chainId: optimism.id, - withdrawParams: { - customTokens: [ - { - address: TEST_ADDRESS, - method: 'withdraw', - intermediateToken: { - address: TEST_ADDRESS, - symbol: 'symbol', - value: '1', - decimals: DEFAULT_PRECISION, - }, - }, - ], - }, - } - const isDeposit = false - const sendToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'send_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const receiveToken: TradingToken = { - address: TEST_ADDRESS, - symbol: 'receive_symbol', - value: '1', - decimals: DEFAULT_PRECISION, - } - const poolDepositAssetAddress = TEST_ADDRESS - - vi.mocked(stateHooks.useTradingPanelPoolConfig).mockReturnValue( - poolConfig as ReturnType, - ) - vi.mocked(stateHooks.useIsDepositTradingPanelType).mockReturnValue( - isDeposit, - ) - vi.mocked(stateHooks.useSendTokenInput).mockReturnValue([ - sendToken, - vi.fn(), - ] as ReturnType) - vi.mocked(stateHooks.useReceiveTokenInput).mockReturnValue([ - receiveToken, - vi.fn(), - ] as ReturnType) - vi.mocked(tradingDepositHooks.usePoolDepositAssetAddress).mockReturnValue( - poolDepositAssetAddress, - ) - - const { result } = renderHook(() => useTradingParams()) - - expect(result.current.poolDepositAddress).toEqual(poolDepositAssetAddress) - }) -}) diff --git a/packages/trading-widget/src/core-kit/hooks/trading/withdraw/index.ts b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/index.ts index 48b6153..927235a 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/withdraw/index.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/index.ts @@ -4,3 +4,4 @@ export { useWithdrawAllowance } from './use-withdraw-allowance' export { useWithdrawSlippage } from './use-withdraw-slippage' export { useWithdrawTypeHandler } from './use-withdraw-type-handler' export { useWithdrawQuote } from './use-withdraw-quote' +export { useWithdrawTradingParams } from './use-withdraw-trading-params' diff --git a/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw-trading-params.test.ts b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw-trading-params.test.ts new file mode 100644 index 0000000..39e7fb2 --- /dev/null +++ b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw-trading-params.test.ts @@ -0,0 +1,129 @@ +import BigNumber from 'bignumber.js' + +import { DEFAULT_PRECISION, optimism } from 'core-kit/const' +import * as stateHooks from 'core-kit/hooks/state' + +import type { TradingToken } from 'core-kit/types' +import { TEST_ADDRESS } from 'tests/mocks' +import { renderHook } from 'tests/test-utils' + +import { useWithdrawTradingParams } from './use-withdraw-trading-params' + +vi.mock('core-kit/hooks/state', () => ({ + useIsDepositTradingPanelType: vi.fn(), + useReceiveTokenInput: vi.fn(), + useSendTokenInput: vi.fn(), + useTradingPanelPoolConfig: vi.fn(), +})) + +describe('useWithdrawTradingParams', () => { + it('should get receiveAssetAddress from intermediateWithdrawTokenAddress for withdrawing with intermediate', () => { + const poolConfig = { + address: TEST_ADDRESS, + chainId: optimism.id, + withdrawParams: { + customTokens: [ + { + address: TEST_ADDRESS, + method: 'withdraw', + intermediateToken: { + address: TEST_ADDRESS, + symbol: 'symbol', + value: '1', + decimals: DEFAULT_PRECISION, + }, + }, + ], + }, + } + const sendToken: TradingToken = { + address: TEST_ADDRESS, + symbol: 'send_symbol', + value: '1', + decimals: DEFAULT_PRECISION, + } + const receiveToken: TradingToken = { + address: TEST_ADDRESS, + symbol: 'receive_symbol', + value: '1', + decimals: DEFAULT_PRECISION, + } + expect( + poolConfig.withdrawParams.customTokens.some( + ({ address }) => address === receiveToken.address, + ), + ).toBe(true) + + vi.mocked(stateHooks.useTradingPanelPoolConfig).mockReturnValue( + poolConfig as ReturnType, + ) + vi.mocked(stateHooks.useSendTokenInput).mockReturnValue([ + sendToken, + vi.fn(), + ] as ReturnType) + vi.mocked(stateHooks.useReceiveTokenInput).mockReturnValue([ + receiveToken, + vi.fn(), + ] as ReturnType) + + const { result } = renderHook(() => useWithdrawTradingParams()) + + expect(result.current.receiveAssetAddress).toEqual( + poolConfig.withdrawParams.customTokens.find( + ({ address }) => address === receiveToken.address, + )?.intermediateToken?.address, + ) + }) + + it('should get sendAssetAddress and fromTokenAmount from sendToken', () => { + const poolConfig = { + address: TEST_ADDRESS, + chainId: optimism.id, + withdrawParams: { + customTokens: [ + { + address: TEST_ADDRESS, + method: 'withdraw', + intermediateToken: { + address: TEST_ADDRESS, + symbol: 'symbol', + value: '1', + decimals: DEFAULT_PRECISION, + }, + }, + ], + }, + } + const sendToken: TradingToken = { + address: TEST_ADDRESS, + symbol: 'send_symbol', + value: '1', + decimals: DEFAULT_PRECISION, + } + const receiveToken: TradingToken = { + address: TEST_ADDRESS, + symbol: 'receive_symbol', + value: '1', + decimals: DEFAULT_PRECISION, + } + + vi.mocked(stateHooks.useTradingPanelPoolConfig).mockReturnValue( + poolConfig as ReturnType, + ) + vi.mocked(stateHooks.useSendTokenInput).mockReturnValue([ + sendToken, + vi.fn(), + ] as ReturnType) + vi.mocked(stateHooks.useReceiveTokenInput).mockReturnValue([ + receiveToken, + vi.fn(), + ] as ReturnType) + + const { result } = renderHook(() => useWithdrawTradingParams()) + + expect(result.current.sendAssetAddress).toEqual(sendToken.address) + expect(result.current.fromTokenAmount).toEqual( + new BigNumber(sendToken.value), + ) + }) +}) diff --git a/packages/trading-widget/src/core-kit/hooks/trading/use-trading-params.ts b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw-trading-params.ts similarity index 55% rename from packages/trading-widget/src/core-kit/hooks/trading/use-trading-params.ts rename to packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw-trading-params.ts index d2e26d7..0dd5552 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/use-trading-params.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw-trading-params.ts @@ -2,17 +2,17 @@ import BigNumber from 'bignumber.js' import { useMemo } from 'react' import { - useIsDepositTradingPanelType, useReceiveTokenInput, useSendTokenInput, useTradingPanelPoolConfig, } from 'core-kit/hooks/state' -import { usePoolDepositAssetAddress } from 'core-kit/hooks/trading/deposit' import type { TradingParams } from 'core-kit/types/trading.types' -export const useTradingParams = (): TradingParams => { +export const useWithdrawTradingParams = (): Omit< + TradingParams, + 'poolDepositAddress' +> => { const poolConfig = useTradingPanelPoolConfig() - const isDeposit = useIsDepositTradingPanelType() const [sendToken] = useSendTokenInput() const [receiveToken] = useReceiveTokenInput() @@ -20,31 +20,21 @@ export const useTradingParams = (): TradingParams => { poolConfig.withdrawParams.customTokens.find( ({ address }) => address === receiveToken.address, )?.intermediateToken?.address - const receiveAssetAddress = isDeposit - ? receiveToken.address - : intermediateWithdrawTokenAddress ?? receiveToken.address - - const poolDepositAssetAddress = usePoolDepositAssetAddress({ - investAssetAddress: sendToken.address, - symbol: sendToken.symbol, - productPoolAddress: poolConfig.address, - chainId: poolConfig.chainId, - }) + const receiveAssetAddress = + intermediateWithdrawTokenAddress ?? receiveToken.address return useMemo( () => ({ sendAssetAddress: sendToken.address, fromTokenAmount: new BigNumber(sendToken.value || '0'), receiveAssetAddress, - receiveAssetInputValue: receiveToken.value, - poolDepositAddress: poolDepositAssetAddress, + receiveAssetAmount: receiveToken.value, }), [ sendToken.address, sendToken.value, receiveToken.value, receiveAssetAddress, - poolDepositAssetAddress, ], ) } diff --git a/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.test.ts b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.test.ts index 6366d83..def5468 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.test.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.test.ts @@ -2,7 +2,6 @@ import BigNumber from 'bignumber.js' import { DEFAULT_PRECISION, optimism } from 'core-kit/const' import * as stateHooks from 'core-kit/hooks/state' -import { useTradingParams } from 'core-kit/hooks/trading' import * as tradingWithdrawHooks from 'core-kit/hooks/trading/withdraw' import * as web3Hooks from 'core-kit/hooks/web3' import { DefaultSellingParams } from 'core-kit/models' @@ -27,7 +26,6 @@ vi.mock('core-kit/hooks/state', () => ({ vi.mock('core-kit/hooks/trading', () => ({ useTradingSettleHandler: vi.fn(), - useTradingParams: vi.fn(), })) vi.mock('core-kit/hooks/web3', () => ({ @@ -38,6 +36,10 @@ vi.mock('./use-is-multi-asset-withdraw', () => ({ useIsMultiAssetWithdraw: vi.fn(), })) +vi.mock('./use-withdraw-trading-params', () => ({ + useWithdrawTradingParams: vi.fn(), +})) + vi.mock('./use-withdraw-slippage', () => ({ useWithdrawSlippage: vi.fn(), })) @@ -46,7 +48,7 @@ describe('useWithdraw', () => { it('should handle multi asset withdraw', async () => { const receiveAssetAddress = TEST_ADDRESS const sendAssetAddress = TEST_ADDRESS - const receiveAssetInputValue = '1' + const receiveAssetAmount = '1' const fromTokenAmount = new BigNumber('1') const poolConfig = { @@ -96,12 +98,14 @@ describe('useWithdraw', () => { send: sendMock, estimate: estimateMock, }) - vi.mocked(useTradingParams).mockImplementation(() => ({ - receiveAssetAddress, - sendAssetAddress, - receiveAssetInputValue, - fromTokenAmount, - })) + vi.mocked(tradingWithdrawHooks.useWithdrawTradingParams).mockImplementation( + () => ({ + receiveAssetAddress, + sendAssetAddress, + receiveAssetAmount, + fromTokenAmount, + }), + ) const { result } = renderHook(() => useWithdraw()) @@ -131,7 +135,7 @@ describe('useWithdraw', () => { it('should handle single asset withdraw', async () => { const receiveAssetAddress = TEST_ADDRESS const sendAssetAddress = TEST_ADDRESS - const receiveAssetInputValue = '1' + const receiveAssetAmount = '1' const fromTokenAmount = new BigNumber('1') const poolConfig = { @@ -182,12 +186,14 @@ describe('useWithdraw', () => { send: sendMock, estimate: estimateMock, }) - vi.mocked(useTradingParams).mockImplementation(() => ({ - receiveAssetAddress, - sendAssetAddress, - receiveAssetInputValue, - fromTokenAmount, - })) + vi.mocked(tradingWithdrawHooks.useWithdrawTradingParams).mockImplementation( + () => ({ + receiveAssetAddress, + sendAssetAddress, + receiveAssetAmount, + fromTokenAmount, + }), + ) const { result } = renderHook(() => useWithdraw()) @@ -212,7 +218,7 @@ describe('useWithdraw', () => { sendAssetAddress, fromTokenAmount: fromTokenAmount.shiftedBy(DEFAULT_PRECISION).toFixed(0), receiveAssetAddress, - receiveAssetInputValue, + receiveAssetInputValue: receiveAssetAmount, decimalsReceiveToken: receiveToken.decimals, }) @@ -225,7 +231,7 @@ describe('useWithdraw', () => { it('should handle single asset withdraw with auto slippage', async () => { const receiveAssetAddress = TEST_ADDRESS const sendAssetAddress = TEST_ADDRESS - const receiveAssetInputValue = '1' + const receiveAssetAmount = '1' const fromTokenAmount = new BigNumber('1') const poolConfig = { @@ -300,7 +306,7 @@ describe('useWithdraw', () => { sendAssetAddress, fromTokenAmount: fromTokenAmount.shiftedBy(DEFAULT_PRECISION).toFixed(0), receiveAssetAddress, - receiveAssetInputValue, + receiveAssetInputValue: receiveAssetAmount, decimalsReceiveToken: receiveToken.decimals, }) diff --git a/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.ts b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.ts index 43915b8..b88b135 100644 --- a/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.ts +++ b/packages/trading-widget/src/core-kit/hooks/trading/withdraw/use-withdraw.ts @@ -12,10 +12,7 @@ import { useTradingPanelSettings, useTradingPanelTransactions, } from 'core-kit/hooks/state' -import { - useTradingParams, - useTradingSettleHandler, -} from 'core-kit/hooks/trading' +import { useTradingSettleHandler } from 'core-kit/hooks/trading' import { useContractFunction } from 'core-kit/hooks/web3' import { DefaultSellingParams } from 'core-kit/models' @@ -32,6 +29,7 @@ import { useConfigContextParams } from 'trading-widget/providers/config-provider import { useIsMultiAssetWithdraw } from './use-is-multi-asset-withdraw' import { useWithdrawSlippage } from './use-withdraw-slippage' +import { useWithdrawTradingParams } from './use-withdraw-trading-params' const action = 'withdraw' @@ -44,9 +42,9 @@ export const useWithdraw = (): ContractActionFunc => { const { receiveAssetAddress, sendAssetAddress, - receiveAssetInputValue, + receiveAssetAmount, fromTokenAmount, - } = useTradingParams() + } = useWithdrawTradingParams() const { defaultWithdrawSlippageScale } = useConfigContextParams() const onSettled = useTradingSettleHandler(action) @@ -73,13 +71,13 @@ export const useWithdraw = (): ContractActionFunc => { .shiftedBy(DEFAULT_PRECISION) .toFixed(0), receiveAssetAddress, - receiveAssetInputValue, + receiveAssetInputValue: receiveAssetAmount, decimalsReceiveToken: receiveToken.decimals, }), [ fromTokenAmount, receiveAssetAddress, - receiveAssetInputValue, + receiveAssetAmount, sendAssetAddress, receiveToken.decimals, ], diff --git a/packages/trading-widget/src/core-kit/types/trading.types.ts b/packages/trading-widget/src/core-kit/types/trading.types.ts index e54df98..1aba332 100644 --- a/packages/trading-widget/src/core-kit/types/trading.types.ts +++ b/packages/trading-widget/src/core-kit/types/trading.types.ts @@ -11,7 +11,7 @@ import type { Address, ChainId } from 'core-kit/types/web3.types' export interface TradingParams { sendAssetAddress: Address fromTokenAmount: BigNumber - receiveAssetInputValue: string + receiveAssetAmount: string poolDepositAddress?: Address receiveAssetAddress: Address } diff --git a/packages/trading-widget/src/index.ts b/packages/trading-widget/src/index.ts index b9ba24f..e97cd2b 100644 --- a/packages/trading-widget/src/index.ts +++ b/packages/trading-widget/src/index.ts @@ -284,7 +284,6 @@ export { useHandleTrade, useIsTradingEnabled, useRawAssetPrice, - useTradingParams, useTradingResultHandling, useMaxSlippagePlaceholder, useMinReceiveText, @@ -302,6 +301,7 @@ export { usePoolDepositAssetAddress, usePoolDepositTokens, useShouldBeWhitelisted, + useDepositTradingParams, } from './core-kit/hooks/trading/deposit' export { useWithdraw, @@ -310,6 +310,7 @@ export { useWithdrawSlippage, useIsMultiAssetWithdraw, useWithdrawTypeHandler, + useWithdrawTradingParams, } from './core-kit/hooks/trading/withdraw' export { useApprove, diff --git a/packages/trading-widget/src/trading-widget/hooks/use-get-slippage-placeholder.ts b/packages/trading-widget/src/trading-widget/hooks/use-get-slippage-placeholder.ts index bb523f2..7d40f89 100644 --- a/packages/trading-widget/src/trading-widget/hooks/use-get-slippage-placeholder.ts +++ b/packages/trading-widget/src/trading-widget/hooks/use-get-slippage-placeholder.ts @@ -1,6 +1,9 @@ import isNumber from 'lodash.isnumber' -import { DEFAULT_WITHDRAW_SLIPPAGE } from 'core-kit/const' +import { + DEFAULT_DEPOSIT_SLIPPAGE, + DEFAULT_WITHDRAW_SLIPPAGE, +} from 'core-kit/const' import type { TradingPanelType } from 'core-kit/types' import { useConfigContextParams } from 'trading-widget/providers/config-provider' @@ -16,12 +19,11 @@ export const useGetSlippagePlaceholder = ({ minSlippage?: number showDefaultSlippage?: boolean }) => { - const { defaultDepositSlippage, defaultWithdrawSlippageScale } = - useConfigContextParams() + const { defaultWithdrawSlippageScale } = useConfigContextParams() if (showDefaultSlippage && slippage === 'auto') { return tradingType === 'deposit' - ? defaultDepositSlippage.toString() + ? DEFAULT_DEPOSIT_SLIPPAGE.toString() : DEFAULT_WITHDRAW_SLIPPAGE.toString() } @@ -34,7 +36,7 @@ export const useGetSlippagePlaceholder = ({ } return tradingType === 'deposit' - ? defaultDepositSlippage.toString() + ? DEFAULT_DEPOSIT_SLIPPAGE.toString() : `auto ${defaultWithdrawSlippageScale[0]}-${ defaultWithdrawSlippageScale[defaultWithdrawSlippageScale.length - 1] }` diff --git a/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.defaults.ts b/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.defaults.ts index 326103a..38700ed 100644 --- a/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.defaults.ts +++ b/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.defaults.ts @@ -3,8 +3,6 @@ import { useCallback } from 'react' import { injected } from 'wagmi/connectors' import { - DEFAULT_DEPOSIT_SLIPPAGE, - DEFAULT_DEPOSIT_SLIPPAGE_SCALE, DEFAULT_WITHDRAW_SLIPPAGE_SCALE, arbitrum, base, @@ -23,8 +21,6 @@ export const DEFAULT_CONFIG_PARAMS: ConfigProviderParams = { isSanctioned: false, depositQuoteDiffWarningThreshold: 1, depositQuoteDiffErrorThreshold: 3, - defaultDepositSlippage: DEFAULT_DEPOSIT_SLIPPAGE, - defaultDepositSlippageScale: DEFAULT_DEPOSIT_SLIPPAGE_SCALE, defaultWithdrawSlippageScale: DEFAULT_WITHDRAW_SLIPPAGE_SCALE, defaultLockTime: formatDuration({ hours: 24 }), customLockTime: formatDuration({ minutes: 15 }), diff --git a/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.types.ts b/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.types.ts index 3db630b..2b4b0ad 100644 --- a/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.types.ts +++ b/packages/trading-widget/src/trading-widget/providers/config-provider/config-provider.types.ts @@ -5,8 +5,6 @@ export interface ConfigProviderParams { isSanctioned: boolean depositQuoteDiffWarningThreshold: number depositQuoteDiffErrorThreshold: number - defaultDepositSlippage: number - defaultDepositSlippageScale: number[] defaultWithdrawSlippageScale: number[] defaultLockTime: string customLockTime: string From 0d0799e1a9f0028df26cd3cd44213803779a578e Mon Sep 17 00:00:00 2001 From: Dmitry Lobachevsky Date: Thu, 1 Aug 2024 17:05:55 +0200 Subject: [PATCH 2/2] feat: trading widget v1.2.2 --- packages/trading-widget/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/trading-widget/package.json b/packages/trading-widget/package.json index 621edee..8d5bb72 100644 --- a/packages/trading-widget/package.json +++ b/packages/trading-widget/package.json @@ -1,6 +1,6 @@ { "name": "@dhedge/trading-widget", - "version": "1.2.1", + "version": "1.2.2", "type": "module", "main": "dist/index.js", "module": "dist/index.mjs",