From 64b998d119d836a1b4cd7c19469029d27b960477 Mon Sep 17 00:00:00 2001 From: surbhi Date: Tue, 14 Oct 2025 18:26:36 -0400 Subject: [PATCH] slippage stuff --- src/components/swap-form.tsx | 61 ++++++++++++++++++++++++++++++++++++ src/hooks/usePartyPlanner.ts | 4 +-- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/src/components/swap-form.tsx b/src/components/swap-form.tsx index cf93e5d..5596941 100644 --- a/src/components/swap-form.tsx +++ b/src/components/swap-form.tsx @@ -19,6 +19,9 @@ export function SwapForm() { const [selectedToToken, setSelectedToToken] = useState(null); const [isFromDropdownOpen, setIsFromDropdownOpen] = useState(false); const [isToDropdownOpen, setIsToDropdownOpen] = useState(false); + const [slippage, setSlippage] = useState(0.5); // Default 0.5% + const [customSlippage, setCustomSlippage] = useState(''); + const [isCustomSlippage, setIsCustomSlippage] = useState(false); const fromDropdownRef = useRef(null); const toDropdownRef = useRef(null); @@ -47,6 +50,19 @@ export function SwapForm() { return () => document.removeEventListener('mousedown', handleClickOutside); }, []); + // Calculate and log limit price when amount or slippage changes + useEffect(() => { + if (fromAmount && parseFloat(fromAmount) > 0) { + const amount = parseFloat(fromAmount); + const slippagePercent = isCustomSlippage ? parseFloat(customSlippage) || 0 : slippage; + const limitPrice = amount * (1 + slippagePercent / 100); + console.log('Limit Price:', limitPrice); + console.log('From Amount:', amount); + console.log('Slippage %:', slippagePercent); + console.log('Additional Amount from Slippage:', limitPrice - amount); + } + }, [fromAmount, slippage, customSlippage, isCustomSlippage]); + const handleSwap = () => { // Swap logic will be implemented later console.log('Swap clicked'); @@ -192,6 +208,51 @@ export function SwapForm() { + {/* Slippage Tolerance */} +
+
+ + + {isCustomSlippage ? customSlippage || '0' : slippage}% + +
+
+ {[0.1, 0.2, 0.3, 1, 2, 3].map((percent) => ( + + ))} +
+ { + setCustomSlippage(e.target.value); + setIsCustomSlippage(true); + }} + onFocus={() => setIsCustomSlippage(true)} + className={`h-9 pr-6 ${isCustomSlippage ? 'border-primary' : ''}`} + step="0.01" + /> + {isCustomSlippage && ( + + % + + )} +
+
+
+ {/* Swap Button */}