From 8cc9d0052196a5845487c834cbac112f251e79b5 Mon Sep 17 00:00:00 2001 From: surbhi Date: Tue, 25 Nov 2025 11:33:14 -0400 Subject: [PATCH] adding insufficient balance error in the swap form --- src/components/swap-form.tsx | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/components/swap-form.tsx b/src/components/swap-form.tsx index 021483e..62c538c 100644 --- a/src/components/swap-form.tsx +++ b/src/components/swap-form.tsx @@ -60,17 +60,34 @@ export function SwapForm() { currentSlippage ); + // Check if user has insufficient balance + const hasInsufficientBalance = useMemo(() => { + if (!selectedFromToken || !fromAmount || fromAmount === '') { + return false; + } + try { + const inputAmount = parseUnits(fromAmount, selectedFromToken.decimals); + return inputAmount > selectedFromToken.balance; + } catch { + return false; + } + }, [selectedFromToken, fromAmount]); + // Initialize swap hook const { executeSwap, estimateGas, isSwapping, gasEstimate, isEstimatingGas } = useSwap(); // Update "You Receive" amount when swap calculation completes useEffect(() => { + if (hasInsufficientBalance) { + setToAmount(''); + return; + } if (swapAmounts && swapAmounts.length > 0 && selectedToToken) { const swapResult = swapAmounts[0]; // Get the first (and should be only) result const formattedAmount = formatUnits(swapResult.amountOut, selectedToToken.decimals); setToAmount(formattedAmount); } - }, [swapAmounts, selectedToToken]); + }, [swapAmounts, selectedToToken, hasInsufficientBalance]); // Close dropdowns when clicking outside useEffect(() => { @@ -346,6 +363,13 @@ export function SwapForm() { )} + {/* Error message for insufficient balance */} + {hasInsufficientBalance && ( +
+

Insufficient balance

+
+ )} + {/* Gas Estimate, Slippage, and Fees */} {isConnected && fromAmount && toAmount && (
@@ -384,10 +408,12 @@ export function SwapForm() {