From cb3ad6e4605349a8c3ff5ee262968150618b71b8 Mon Sep 17 00:00:00 2001 From: tjs Date: Wed, 14 Dec 2022 11:11:47 -0500 Subject: [PATCH 1/4] add console log for maxSwapForUI --- components/swap/useTokenMax.tsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/swap/useTokenMax.tsx b/components/swap/useTokenMax.tsx index bbfdf4d1..c28e6a12 100644 --- a/components/swap/useTokenMax.tsx +++ b/components/swap/useTokenMax.tsx @@ -66,6 +66,16 @@ export const getTokenInMax = ( inputBank.mintDecimals ) + console.log( + 'getMaxSourceUiForTokenSwap', + mangoAccount.getMaxSourceUiForTokenSwap( + group, + inputBank.mint, + outputBank.mint, + 1 + ) + ) + const maxAmount = useMargin ? Decimal.min( maxAmountWithoutMargin, From af27b339aa4e3f235088a4d953f070ce1c6831a3 Mon Sep 17 00:00:00 2001 From: tjs Date: Wed, 14 Dec 2022 11:20:36 -0500 Subject: [PATCH 2/4] fix call to getmaxsourceuifortokenswap --- components/swap/useTokenMax.tsx | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/components/swap/useTokenMax.tsx b/components/swap/useTokenMax.tsx index c28e6a12..e3aeffe6 100644 --- a/components/swap/useTokenMax.tsx +++ b/components/swap/useTokenMax.tsx @@ -56,7 +56,7 @@ export const getTokenInMax = ( group, inputBank.mint, outputBank.mint, - 1 + inputBank.uiPrice / outputBank.uiPrice ), inputBank.mintDecimals ) @@ -66,16 +66,6 @@ export const getTokenInMax = ( inputBank.mintDecimals ) - console.log( - 'getMaxSourceUiForTokenSwap', - mangoAccount.getMaxSourceUiForTokenSwap( - group, - inputBank.mint, - outputBank.mint, - 1 - ) - ) - const maxAmount = useMargin ? Decimal.min( maxAmountWithoutMargin, From 0df4b365ebb683fee173291f05caee17ce2d3373 Mon Sep 17 00:00:00 2001 From: tjs Date: Wed, 14 Dec 2022 11:40:43 -0500 Subject: [PATCH 3/4] fix perp form error when projecting health --- components/trade/AdvancedTradeForm.tsx | 68 ++++++++++++++------------ 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/components/trade/AdvancedTradeForm.tsx b/components/trade/AdvancedTradeForm.tsx index 6f29f107..006b5df4 100644 --- a/components/trade/AdvancedTradeForm.tsx +++ b/components/trade/AdvancedTradeForm.tsx @@ -313,40 +313,44 @@ const AdvancedTradeForm = () => { const maintProjectedHealth = useMemo(() => { const group = mangoStore.getState().group const mangoAccount = mangoStore.getState().mangoAccount.current - if (!mangoAccount || !group || !Number(tradeForm.baseSize)) return 100 + if (!mangoAccount || !group || !Number.isInteger(tradeForm.baseSize)) + return 100 let simulatedHealthRatio = 0 - - if (selectedMarket instanceof Serum3Market) { - simulatedHealthRatio = - tradeForm.side === 'sell' - ? mangoAccount.simHealthRatioWithSerum3AskUiChanges( - group, - parseFloat(tradeForm.baseSize), - selectedMarket.serumMarketExternal, - HealthType.maint - ) - : mangoAccount.simHealthRatioWithSerum3BidUiChanges( - group, - parseFloat(tradeForm.baseSize), - selectedMarket.serumMarketExternal, - HealthType.maint - ) - } else if (selectedMarket instanceof PerpMarket) { - simulatedHealthRatio = - tradeForm.side === 'sell' - ? mangoAccount.simHealthRatioWithPerpAskUiChanges( - group, - selectedMarket.perpMarketIndex, - parseFloat(tradeForm.baseSize), - parseFloat(tradeForm.price) - ) - : mangoAccount.simHealthRatioWithPerpBidUiChanges( - group, - selectedMarket.perpMarketIndex, - parseFloat(tradeForm.baseSize), - parseFloat(tradeForm.price) - ) + try { + if (selectedMarket instanceof Serum3Market) { + simulatedHealthRatio = + tradeForm.side === 'sell' + ? mangoAccount.simHealthRatioWithSerum3AskUiChanges( + group, + parseFloat(tradeForm.baseSize), + selectedMarket.serumMarketExternal, + HealthType.maint + ) + : mangoAccount.simHealthRatioWithSerum3BidUiChanges( + group, + parseFloat(tradeForm.baseSize), + selectedMarket.serumMarketExternal, + HealthType.maint + ) + } else if (selectedMarket instanceof PerpMarket) { + simulatedHealthRatio = + tradeForm.side === 'sell' + ? mangoAccount.simHealthRatioWithPerpAskUiChanges( + group, + selectedMarket.perpMarketIndex, + parseFloat(tradeForm.baseSize), + parseFloat(tradeForm.price) + ) + : mangoAccount.simHealthRatioWithPerpBidUiChanges( + group, + selectedMarket.perpMarketIndex, + parseFloat(tradeForm.baseSize), + parseFloat(tradeForm.price) + ) + } + } catch (e) { + console.warn('Error calculating projected health: ', e) } return simulatedHealthRatio > 100 From 4875c77c530978a69defb89ace7e3446971e8641 Mon Sep 17 00:00:00 2001 From: tjs Date: Wed, 14 Dec 2022 11:42:07 -0500 Subject: [PATCH 4/4] ooops --- components/trade/AdvancedTradeForm.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/trade/AdvancedTradeForm.tsx b/components/trade/AdvancedTradeForm.tsx index 006b5df4..9089a3be 100644 --- a/components/trade/AdvancedTradeForm.tsx +++ b/components/trade/AdvancedTradeForm.tsx @@ -313,7 +313,11 @@ const AdvancedTradeForm = () => { const maintProjectedHealth = useMemo(() => { const group = mangoStore.getState().group const mangoAccount = mangoStore.getState().mangoAccount.current - if (!mangoAccount || !group || !Number.isInteger(tradeForm.baseSize)) + if ( + !mangoAccount || + !group || + !Number.isInteger(Number(tradeForm.baseSize)) + ) return 100 let simulatedHealthRatio = 0