From 45e6eae730b0371a532536c4ba91fa4355c887ab Mon Sep 17 00:00:00 2001 From: samuelea Date: Thu, 27 Nov 2025 16:23:14 -0500 Subject: [PATCH] better logic for initial balance check --- .../PayWithCrypto/useInitialBalanceCheck.tsx | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx index 61a786c8e..792d8cde1 100644 --- a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx +++ b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx @@ -30,7 +30,11 @@ export const useInitialBalanceCheck = ({ const isInitialBalanceChecked = (navigation.params as PaymentMethodSelectionParams).isInitialBalanceChecked - const { data: swapRoutes = [], isLoading: swapRoutesIsLoading } = useGetSwapRoutes( + const { + data: swapRoutes = [], + isLoading: swapRoutesIsLoading, + isError: isErrorSwapRoutes + } = useGetSwapRoutes( { walletAddress: userAddress ?? '', toTokenAddress: buyCurrencyAddress, @@ -42,7 +46,11 @@ export const useInitialBalanceCheck = ({ } ) - const { data: swapRoutesTokenBalancesData, isLoading: swapRoutesTokenBalancesIsLoading } = useGetTokenBalancesSummary( + const { + data: swapRoutesTokenBalancesData, + isLoading: swapRoutesTokenBalancesIsLoading, + isError: isErrorSwapRoutesTokenBalances + } = useGetTokenBalancesSummary( { chainIds: [chainId], filter: { @@ -80,6 +88,18 @@ export const useInitialBalanceCheck = ({ } } + if (!validSwapRoute) { + setNavigation({ + location: 'payment-method-selection', + params: { + ...navigation.params, + isInitialBalanceChecked: true + } + }) + + return + } + setNavigation({ location: 'payment-method-selection', params: { @@ -95,7 +115,15 @@ export const useInitialBalanceCheck = ({ useEffect(() => { if (!isInitialBalanceChecked && !tokenBalancesIsLoading && !swapRoutesIsLoading && !swapRoutesTokenBalancesIsLoading) { - if (isInsufficientBalance) { + if (isErrorSwapRoutes || isErrorSwapRoutesTokenBalances) { + setNavigation({ + location: 'payment-method-selection', + params: { + ...navigation.params, + isInitialBalanceChecked: true + } + }) + } else if (isInsufficientBalance) { findSwapQuote() } else { setNavigation({ @@ -112,6 +140,8 @@ export const useInitialBalanceCheck = ({ isInsufficientBalance, tokenBalancesIsLoading, swapRoutesIsLoading, - swapRoutesTokenBalancesIsLoading + swapRoutesTokenBalancesIsLoading, + isErrorSwapRoutes, + isErrorSwapRoutesTokenBalances ]) }