From 8bd4d2e97693fe0c39fca90a8ed46d902d98f46c Mon Sep 17 00:00:00 2001 From: saml33 Date: Thu, 17 Nov 2022 20:17:58 +1100 Subject: [PATCH] fix market price --- components/shared/SwapTradeBalances.tsx | 10 +++++++--- components/trade/AdvancedTradeForm.tsx | 20 +++++++++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/components/shared/SwapTradeBalances.tsx b/components/shared/SwapTradeBalances.tsx index 634f94a8..43b861db 100644 --- a/components/shared/SwapTradeBalances.tsx +++ b/components/shared/SwapTradeBalances.tsx @@ -207,11 +207,15 @@ const Balance = ({ bank }: { bank: Bank }) => { const set = mangoStore.getState().set const tradeForm = mangoStore.getState().tradeForm - let price = new Decimal(tradeForm.price).toNumber() + let price: number if (tradeForm.tradeType === 'Market') { const orderbook = mangoStore.getState().selectedMarket.orderbook - price = calculateMarketPrice(orderbook, balance, tradeForm.side, type) - } + const side = + (balance > 0 && type === 'quote') || (balance < 0 && type === 'base') + ? 'buy' + : 'sell' + price = calculateMarketPrice(orderbook, balance, side, type) + } else price = new Decimal(tradeForm.price).toNumber() if (balance > 0) { if (type === 'quote') { diff --git a/components/trade/AdvancedTradeForm.tsx b/components/trade/AdvancedTradeForm.tsx index cb7482ce..4f4b0c8f 100644 --- a/components/trade/AdvancedTradeForm.tsx +++ b/components/trade/AdvancedTradeForm.tsx @@ -192,13 +192,19 @@ const AdvancedTradeForm = () => { const group = mangoStore.getState().group if (!group || !selectedMarket) return if (selectedMarket instanceof Serum3Market) { - const baseBank = group?.getFirstBankByTokenIndex( - selectedMarket.baseTokenIndex - ) - if (baseBank.uiPrice) { - const price = baseBank.uiPrice.toString() + if (tradeForm.tradeType === 'Limit') { + const baseBank = group?.getFirstBankByTokenIndex( + selectedMarket.baseTokenIndex + ) + if (baseBank.uiPrice) { + const price = baseBank.uiPrice.toString() + set((s) => { + s.tradeForm.price = price + }) + } + } else { set((s) => { - s.tradeForm.price = price + s.tradeForm.price = '' }) } } else { @@ -206,7 +212,7 @@ const AdvancedTradeForm = () => { s.tradeForm.price = selectedMarket._uiPrice.toString() }) } - }, [set, selectedMarket]) + }, [set, selectedMarket, tradeForm]) const handlePlaceOrder = useCallback(async () => { const client = mangoStore.getState().client