From abb977a1247036811ab81046c15c961bd9c9699b Mon Sep 17 00:00:00 2001 From: saml33 Date: Wed, 27 Mar 2024 10:19:01 +1100 Subject: [PATCH] small fixes/updates --- components/DepositForm.tsx | 11 +++++++++-- components/EditLeverageForm.tsx | 4 ---- components/StakeForm.tsx | 13 ++++++++++--- components/UnstakeForm.tsx | 34 ++++++++++++++++++++++++++------- 4 files changed, 46 insertions(+), 16 deletions(-) diff --git a/components/DepositForm.tsx b/components/DepositForm.tsx index 3685373..76e75e5 100644 --- a/components/DepositForm.tsx +++ b/components/DepositForm.tsx @@ -2,7 +2,10 @@ import { ArrowPathIcon, ExclamationCircleIcon } from '@heroicons/react/20/solid' import { useWallet } from '@solana/wallet-adapter-react' import { useTranslation } from 'next-i18next' import React, { useCallback, useMemo, useState } from 'react' -import NumberFormat, { NumberFormatValues } from 'react-number-format' +import NumberFormat, { + NumberFormatValues, + SourceInfo, +} from 'react-number-format' import mangoStore from '@store/mangoStore' import { notify } from '../utils/notifications' import { formatTokenSymbol } from '../utils/tokens' @@ -135,6 +138,7 @@ function DespositForm({ token: selectedToken, clientContext }: StakeFormProps) { state.submittingBoost = false }) setInputAmount('') + setSizePercentage('') await sleep(500) if (!mangoAccount) { await actions.fetchMangoAccounts(publicKey) @@ -217,10 +221,13 @@ function DespositForm({ token: selectedToken, clientContext }: StakeFormProps) { className={NUMBERFORMAT_CLASSES} placeholder="0.00" value={inputAmount} - onValueChange={(e: NumberFormatValues) => { + onValueChange={(e: NumberFormatValues, info: SourceInfo) => { setInputAmount( !Number.isNaN(Number(e.value)) ? e.value : '', ) + if (info.source === 'event') { + setSizePercentage('') + } }} isAllowed={withValueLimit} /> diff --git a/components/EditLeverageForm.tsx b/components/EditLeverageForm.tsx index ce4e4c2..88fa9dd 100644 --- a/components/EditLeverageForm.tsx +++ b/components/EditLeverageForm.tsx @@ -120,10 +120,6 @@ function EditLeverageForm({ const [leverage, setLeverage] = useState(current_leverage) - useEffect(() => { - setLeverage(current_leverage) - }, [current_leverage]) - const { financialMetrics, borrowBankBorrowRate } = useBankRates( selectedToken, leverage, diff --git a/components/StakeForm.tsx b/components/StakeForm.tsx index a585877..e1549e6 100644 --- a/components/StakeForm.tsx +++ b/components/StakeForm.tsx @@ -6,7 +6,10 @@ import { import { useWallet } from '@solana/wallet-adapter-react' import { useTranslation } from 'next-i18next' import React, { useCallback, useEffect, useMemo, useState } from 'react' -import NumberFormat, { NumberFormatValues } from 'react-number-format' +import NumberFormat, { + NumberFormatValues, + SourceInfo, +} from 'react-number-format' import mangoStore from '@store/mangoStore' import { notify } from '../utils/notifications' import { TokenAccount, formatTokenSymbol } from '../utils/tokens' @@ -250,6 +253,7 @@ function StakeForm({ token: selectedToken, clientContext }: StakeFormProps) { state.submittingBoost = false }) setInputAmount('') + setSizePercentage('') await sleep(500) if (!mangoAccount) { await actions.fetchMangoAccounts(publicKey) @@ -367,10 +371,13 @@ function StakeForm({ token: selectedToken, clientContext }: StakeFormProps) { className={NUMBERFORMAT_CLASSES} placeholder="0.00" value={inputAmount} - onValueChange={(e: NumberFormatValues) => { + onValueChange={(e: NumberFormatValues, info: SourceInfo) => { setInputAmount( !Number.isNaN(Number(e.value)) ? e.value : '', ) + if (info.source === 'event') { + setSizePercentage('') + } }} isAllowed={withValueLimit} /> @@ -385,7 +392,7 @@ function StakeForm({ token: selectedToken, clientContext }: StakeFormProps) {
- {tokenMax.maxAmount === 0 ? ( + {connected && groupLoaded && tokenMax.maxAmount === 0 ? ( { + if (!stakeBank) return 0 + const group = clientContext === 'jlp' ? jlpGroup : lstGroup + if (!group) return 0 + const vaultBalance = group.getTokenVaultBalanceByMintUi(stakeBank.mint) + const vaultDeposits = stakeBank.uiDeposits() + const available = + vaultBalance - vaultDeposits * stakeBank.minVaultToDepositsRatio + return available + }, [stakeBank, jlpGroup, lstGroup, clientContext]) + const showInsufficientBalance = tokenMax.maxAmount < Number(inputAmount) || (selectedToken === 'USDC' && maxSolDeposit <= 0) - const lowVaultBalance = - Math.floor(tokenMax.maxAmount * 100000) < - Math.floor(Number(inputAmount) * 100000) && - Number(inputAmount) > maxWithdraw + const lowVaultBalance = maxWithdraw > availableVaultBalance + + // const lowVaultBalance = + // Math.floor(tokenMax.maxAmount * 100000) < + // Math.floor(Number(inputAmount) * 100000) && + // Number(inputAmount) > maxWithdraw useEffect(() => { const group = mangoStore.getState().group[clientContext] @@ -326,10 +343,13 @@ function UnstakeForm({ className={NUMBERFORMAT_CLASSES} placeholder="0.00" value={inputAmount} - onValueChange={(e: NumberFormatValues) => { + onValueChange={(e: NumberFormatValues, info: SourceInfo) => { setInputAmount( !Number.isNaN(Number(e.value)) ? e.value : '', ) + if (info.source === 'event') { + setSizePercentage('') + } }} isAllowed={withValueLimit} /> @@ -485,7 +505,7 @@ function UnstakeForm({
) : null}