truncate decimals on max swap

This commit is contained in:
tjs 2022-08-25 18:03:28 -04:00
parent 8f39fb2272
commit 297b945a23
1 changed files with 17 additions and 16 deletions

View File

@ -53,7 +53,11 @@ const SwapForm = () => {
const jupiterTokens = mangoStore((s) => s.jupiterTokens)
const connected = mangoStore((s) => s.connected)
const [debouncedAmountIn] = useDebounce(amountInFormValue, 300)
const { amount: tokenMax, amountWithBorrow, decimals } = useTokenMax()
const {
amount: tokenMax,
amountWithBorrow,
decimals,
} = useTokenMax(useMargin)
const { amountOut, jupiter, routes } = useJupiter({
inputTokenInfo,
@ -397,7 +401,7 @@ const SwapForm = () => {
export default SwapForm
export const useTokenMax = () => {
export const useTokenMax = (useMargin = true) => {
const mangoAccount = mangoStore((s) => s.mangoAccount.current)
const inputBank = mangoStore((s) => s.swap.inputBank)
const outputBank = mangoStore((s) => s.swap.outputBank)
@ -409,21 +413,16 @@ export const useTokenMax = () => {
if (!group || !inputBank || !mangoAccount || !outputBank)
return { amount: 0.0, decimals: 6, amountWithBorrow: 0.0 }
const tokenBalance = mangoAccount?.getTokenBalanceUi(inputBank)
const tokenBalance = floorToDecimal(
mangoAccount?.getTokenBalanceUi(inputBank),
inputBank.mintDecimals
)
const maxAmountWithoutMargin = tokenBalance > 0 ? tokenBalance : 0
const inputBankVaultBalance = floorToDecimal(
inputBank.uiDeposits() - inputBank.uiBorrows(),
inputBank.mintDecimals
)
// const inputBankLiquidity = floorToDecimal(
// inputBank.uiDeposits() - inputBank.uiBorrows(),
// inputBank.mintDecimals
// )
// const maxWithdrawableAmount = Math.min(
// mangoAccount.getTokenBalanceUi(inputBank),
// inputBankLiquidity
// )
const maxUiAmountWithBorrow = mangoAccount?.getMaxSourceUiForTokenSwap(
group,
inputBank.mint,
@ -432,11 +431,13 @@ export const useTokenMax = () => {
)
return {
amount: Math.min(
maxAmountWithoutMargin,
inputBankVaultBalance,
maxUiAmountWithBorrow
),
amount: useMargin
? Math.min(
maxAmountWithoutMargin,
inputBankVaultBalance,
maxUiAmountWithBorrow
)
: Math.min(maxAmountWithoutMargin, inputBankVaultBalance),
amountWithBorrow: Math.min(
floorToDecimal(maxUiAmountWithBorrow, inputBank.mintDecimals),
inputBankVaultBalance