@@ -15,13 +15,14 @@ import {
1515 useUserSlippageTolerance ,
1616 useBonusRouterManager ,
1717 useSlippageManuallySet ,
18+ useUserSlippageAuto ,
1819 useUserSingleHopOnly ,
1920 useIsInfiniteApproval ,
2021} from 'state/user/hooks' ;
2122import { ReactComponent as CloseIcon } from 'assets/images/CloseIcon.svg' ;
2223import 'components/styles/SettingsModal.scss' ;
2324import { useTranslation } from 'react-i18next' ;
24- import { SLIPPAGE_AUTO } from 'state/user/reducer' ;
25+ import { SLIPPAGE_DEFAULT } from 'state/user/reducer' ;
2526import { isMobile } from 'react-device-detect' ;
2627import { LiquidityHubSettings } from 'components/Swap/orbs/LiquidityHub/Components' ;
2728
@@ -64,6 +65,9 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
6465 slippageManuallySet ,
6566 setSlippageManuallySet ,
6667 ] = useSlippageManuallySet ( ) ;
68+
69+ const [ userSlippageAuto , setUserSlippageAuto ] = useUserSlippageAuto ( ) ;
70+
6771 const [ ttl , setTtl ] = useUserTransactionTTL ( ) ;
6872 const { onChangeRecipient } = useSwapActionHandlers ( ) ;
6973 const [ expertMode , toggleExpertMode ] = useExpertModeManager ( ) ;
@@ -84,18 +88,24 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
8488 deadlineInput === '' || ( ttl / 60 ) . toString ( ) === deadlineInput ;
8589
8690 const slippageError = useMemo ( ( ) => {
91+ if ( userSlippageAuto ) {
92+ return undefined ;
93+ }
8794 if ( slippageInput !== '' && ! slippageInputIsValid ) {
8895 return SlippageError . InvalidInput ;
89- } else if ( userSlippageTolerance === SLIPPAGE_AUTO ) {
90- return undefined ;
9196 } else if ( slippageInputIsValid && userSlippageTolerance < 50 ) {
9297 return SlippageError . RiskyLow ;
9398 } else if ( slippageInputIsValid && userSlippageTolerance > 500 ) {
9499 return SlippageError . RiskyHigh ;
95100 } else {
96101 return undefined ;
97102 }
98- } , [ slippageInput , userSlippageTolerance , slippageInputIsValid ] ) ;
103+ } , [
104+ slippageInput ,
105+ userSlippageTolerance ,
106+ slippageInputIsValid ,
107+ userSlippageAuto ,
108+ ] ) ;
99109
100110 const slippageAlert =
101111 ! ! slippageInput &&
@@ -112,7 +122,6 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
112122
113123 const parseCustomSlippage = ( value : string ) => {
114124 setSlippageInput ( value ) ;
115-
116125 try {
117126 const valueAsIntFromRoundedFloat = Number . parseInt (
118127 ( Number . parseFloat ( value ) * 100 ) . toString ( ) ,
@@ -122,6 +131,7 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
122131 valueAsIntFromRoundedFloat < 5000
123132 ) {
124133 setUserslippageTolerance ( valueAsIntFromRoundedFloat ) ;
134+ setUserSlippageAuto ( false ) ;
125135 if ( userSlippageTolerance !== valueAsIntFromRoundedFloat ) {
126136 setSlippageManuallySet ( true ) ;
127137 }
@@ -198,14 +208,15 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
198208 < Box className = 'flex items-center' >
199209 < Box
200210 className = { `slippageButton${
201- userSlippageTolerance === SLIPPAGE_AUTO
211+ userSlippageTolerance === SLIPPAGE_DEFAULT && userSlippageAuto
202212 ? ' activeSlippageButton'
203213 : ''
204214 } `}
205215 onClick = { ( ) => {
206216 setSlippageInput ( '' ) ;
207- setUserslippageTolerance ( SLIPPAGE_AUTO ) ;
208- if ( userSlippageTolerance !== SLIPPAGE_AUTO ) {
217+ setUserslippageTolerance ( SLIPPAGE_DEFAULT ) ;
218+ setUserSlippageAuto ( true ) ;
219+ if ( userSlippageTolerance !== SLIPPAGE_DEFAULT ) {
209220 setSlippageManuallySet ( true ) ;
210221 }
211222 } }
@@ -219,6 +230,7 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
219230 onClick = { ( ) => {
220231 setSlippageInput ( '' ) ;
221232 setUserslippageTolerance ( 10 ) ;
233+ setUserSlippageAuto ( false ) ;
222234 if ( userSlippageTolerance !== 10 ) {
223235 setSlippageManuallySet ( true ) ;
224236 }
@@ -228,11 +240,14 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
228240 </ Box >
229241 < Box
230242 className = { `slippageButton${
231- userSlippageTolerance === 50 ? ' activeSlippageButton' : ''
243+ userSlippageTolerance === 50 && ! userSlippageAuto
244+ ? ' activeSlippageButton'
245+ : ''
232246 } `}
233247 onClick = { ( ) => {
234248 setSlippageInput ( '' ) ;
235249 setUserslippageTolerance ( 50 ) ;
250+ setUserSlippageAuto ( false ) ;
236251 if ( userSlippageTolerance !== 50 ) {
237252 setSlippageManuallySet ( true ) ;
238253 }
@@ -247,6 +262,7 @@ const SettingsModal: React.FC<SettingsModalProps> = ({
247262 onClick = { ( ) => {
248263 setSlippageInput ( '' ) ;
249264 setUserslippageTolerance ( 100 ) ;
265+ setUserSlippageAuto ( false ) ;
250266 if ( userSlippageTolerance !== 100 ) {
251267 setSlippageManuallySet ( true ) ;
252268 }
0 commit comments