1
1
import { useCallback , useEffect , useState } from "react" ;
2
2
3
- import { AB_HIGH_LEVERAGE_WARNING_GROUP , AB_HIGH_LEVERAGE_WARNING_PROBABILITY } from "config/ab" ;
3
+ import {
4
+ AB_HIGH_LEVERAGE_WARNING_ALTCOIN_LEVERAGE ,
5
+ AB_HIGH_LEVERAGE_WARNING_GROUP ,
6
+ AB_HIGH_LEVERAGE_WARNING_MAJOR_TOKEN_LEVERAGE ,
7
+ AB_HIGH_LEVERAGE_WARNING_PROBABILITY ,
8
+ } from "config/ab" ;
4
9
import { ARBITRUM , AVALANCHE , BOTANIX } from "config/chains" ;
5
- import { BASIS_POINTS_DIVISOR_BIGINT } from "config/factors" ;
6
10
import { getHighLeverageWarningDismissedTimestampKey } from "config/localStorage" ;
7
11
import { selectAccount , selectChainId } from "context/SyntheticsStateContext/selectors/globalSelectors" ;
12
+ import { selectIsLeverageSliderEnabled } from "context/SyntheticsStateContext/selectors/settingsSelectors" ;
8
13
import { selectTradeboxToTokenAddress } from "context/SyntheticsStateContext/selectors/shared/baseSelectors" ;
9
- import { selectTradeboxLeverage } from "context/SyntheticsStateContext/selectors/tradeboxSelectors" ;
14
+ import {
15
+ selectTradeboxIncreasePositionAmounts ,
16
+ selectTradeboxLeverage ,
17
+ } from "context/SyntheticsStateContext/selectors/tradeboxSelectors" ;
10
18
import { useSelector } from "context/SyntheticsStateContext/utils" ;
11
19
import { useIsFreshAccountForHighLeverageTrading } from "domain/synthetics/accountStats/useIsFreshAccountForHighLeverageTrading" ;
12
20
import { useIsAddressInGroup } from "lib/userAnalytics/getIsAddressInGroup" ;
@@ -18,8 +26,6 @@ const IS_MAJOR_TOKEN_MAP: Record<number, string[]> = {
18
26
[ BOTANIX ] : [ "BTC" ] ,
19
27
} ;
20
28
21
- const MAX_MAJOR_TOKEN_LEVERAGE = 15n * BASIS_POINTS_DIVISOR_BIGINT ;
22
- const MAX_ALTCOIN_LEVERAGE = 10n * BASIS_POINTS_DIVISOR_BIGINT ;
23
29
const WAIVE_DISMISSAL_PERIOD_MS = 24 * 60 * 60 * 1000 ; // 24 hours
24
30
const DISMISSAL_POLL_INTERVAL_MS = 5000 ;
25
31
@@ -50,9 +56,14 @@ export function useShowHighLeverageWarning(): {
50
56
const toTokenAddress = useSelector ( selectTradeboxToTokenAddress ) ;
51
57
const toTokenSymbol = toTokenAddress ? getToken ( chainId , toTokenAddress ) . symbol : undefined ;
52
58
const isMajorToken = toTokenSymbol ? IS_MAJOR_TOKEN_MAP [ chainId ] . includes ( toTokenSymbol ) : false ;
53
- const leverage = useSelector ( selectTradeboxLeverage ) ;
54
-
55
- const isHighLeverage = isMajorToken ? leverage >= MAX_MAJOR_TOKEN_LEVERAGE : leverage >= MAX_ALTCOIN_LEVERAGE ;
59
+ const isLeverageSliderEnabled = useSelector ( selectIsLeverageSliderEnabled ) ;
60
+ const leverageSliderLeverage = useSelector ( selectTradeboxLeverage ) ;
61
+ const amounts = useSelector ( selectTradeboxIncreasePositionAmounts ) ;
62
+ const leverage = isLeverageSliderEnabled ? leverageSliderLeverage : amounts ?. estimatedLeverage ?? 0n ;
63
+
64
+ const isHighLeverage = isMajorToken
65
+ ? leverage >= AB_HIGH_LEVERAGE_WARNING_MAJOR_TOKEN_LEVERAGE
66
+ : leverage >= AB_HIGH_LEVERAGE_WARNING_ALTCOIN_LEVERAGE ;
56
67
57
68
const [ dismissedTimestamp , setDismissedTimestamp ] = useState ( ( ) => {
58
69
if ( ! account ) {
0 commit comments