11import type { SelectedQuote , SwapButtonState } from '../types' ;
22
33import { i18n } from '@lingui/core' ;
4- import { Button , Divider , styled , WarningIcon } from '@rango-dev/ui' ;
4+ import { Alert , Button , Divider , styled , WarningIcon } from '@rango-dev/ui' ;
55import BigNumber from 'bignumber.js' ;
66import React , { useEffect , useState } from 'react' ;
77import { useNavigate } from 'react-router-dom' ;
@@ -14,6 +14,7 @@ import { SameTokensWarning } from '../components/SameTokensWarning';
1414import { SlippageWarningsAndErrors } from '../components/SlippageWarningsAndErrors/SlippageWarningsAndErrors' ;
1515import { SwapMetrics } from '../components/SwapMetrics' ;
1616import { WalletAddressErrorModal } from '../components/WalletAddressErrorModal/WalletAddressErrorModal' ;
17+ import { getQuoteErrorMessage } from '../constants/errors' ;
1718import { navigationRoutes } from '../constants/navigationRoutes' ;
1819import { SLIPPAGES } from '../constants/swapSettings' ;
1920import { ExpandedQuotes } from '../containers/ExpandedQuotes' ;
@@ -26,7 +27,7 @@ import { useSwapMode } from '../hooks/useSwapMode';
2627import { useAppStore } from '../store/AppStore' ;
2728import { useQuoteStore } from '../store/quote' ;
2829import { useUiStore } from '../store/ui' ;
29- import { UiEventTypes } from '../types' ;
30+ import { QuoteErrorType , UiEventTypes } from '../types' ;
3031import { isVariantExpandable } from '../utils/configs' ;
3132import { emitPreventableEvent } from '../utils/events' ;
3233import { getSlippageValidation } from '../utils/settings' ;
@@ -59,11 +60,11 @@ export function Home() {
5960 setQuoteWarningsConfirmed,
6061 updateQuotePartialState,
6162 setConfirmSwapData,
63+ resetAlerts,
6264 } = useQuoteStore ( ) ( ) ;
6365
6466 const [ isVisibleExpanded , setIsVisibleExpanded ] = useState < boolean > ( false ) ;
6567 const { isLargeScreen, isExtraLargeScreen } = useScreenDetect ( ) ;
66-
6768 const { fetch : fetchQuote , loading } = useSwapInput ( { refetchQuote } ) ;
6869 const {
6970 config,
@@ -130,7 +131,6 @@ export function Home() {
130131
131132 const currentQuoteWarning =
132133 slippageValidation ?. quoteValidation || quoteWarning ;
133-
134134 const hasValidQuotes =
135135 ! isExpandable || ( isExpandable && quotes ?. results . length ) ;
136136 const hasWarningOrError = currentQuoteWarning || quoteError ;
@@ -204,7 +204,9 @@ export function Home() {
204204 onHandleNavigation ( navigationRoutes . destinationWallet ) ,
205205 'confirm-warning' : ( ) => setShowQuoteWarningModal ( true ) ,
206206 'show-wallet-address-error' : ( ) => setShowWalletAddressError ( true ) ,
207- 'confirm-swap' : handleConfirmSwap ,
207+ 'confirm-swap' : async ( ) => {
208+ await handleConfirmSwap ( ( ) => navigate ( navigationRoutes . confirmSwap ) ) ;
209+ } ,
208210 'select-route-wallets' : ( ) =>
209211 onHandleNavigation ( navigationRoutes . routeWallets ) ,
210212 } ;
@@ -218,6 +220,7 @@ export function Home() {
218220 } ;
219221
220222 const onConfirmBalanceWarning = ( ) => {
223+ resetAlerts ( ) ;
221224 if ( confirmSwapResult ?. quoteData ) {
222225 setConfirmSwapData ( {
223226 proceedAnyway : true ,
@@ -339,7 +342,7 @@ export function Home() {
339342 skipAlerts = { ! ! slippageValidation }
340343 couldChangeSettings = { true }
341344 refetchQuote = { fetchQuote }
342- showWarningModal = { showQuoteWarningModal || showBalanceWarning }
345+ showWarningModal = { showQuoteWarningModal }
343346 confirmationDisabled = { ! isActiveTab }
344347 onOpenWarningModal = { ( ) => setShowQuoteWarningModal ( true ) }
345348 onCloseWarningModal = { ( ) => setShowQuoteWarningModal ( false ) }
@@ -366,6 +369,20 @@ export function Home() {
366369 />
367370 </ >
368371 ) }
372+
373+ { ! ! confirmSwapResult ?. error &&
374+ confirmSwapResult . error . type === QuoteErrorType . REQUEST_FAILED && (
375+ < >
376+ < Divider size = { 8 } />
377+ < Alert
378+ type = "error"
379+ variant = "alarm"
380+ titleAlign = "left"
381+ title = { getQuoteErrorMessage ( confirmSwapResult . error ) }
382+ />
383+ < Divider size = { 8 } />
384+ </ >
385+ ) }
369386 < SameTokensWarning />
370387 </ PageContainer >
371388 </ Layout >
0 commit comments