fix calculation of redeemable amount
This commit is contained in:
parent
9b62f6ebf4
commit
d084213183
|
@ -6,23 +6,27 @@ import ConnectWalletButton from './ConnectWalletButton'
|
|||
import Loading from './Loading'
|
||||
import useLargestAccounts from '../hooks/useLargestAccounts'
|
||||
import useVaults from '../hooks/useVaults'
|
||||
import { calculateSupply } from '../utils/balance'
|
||||
|
||||
const RedeemModal = () => {
|
||||
const actions = useWalletStore((s) => s.actions)
|
||||
const wallet = useWalletStore((s) => s.current)
|
||||
const connected = useWalletStore((s) => s.connected)
|
||||
const redeemableMint = useWalletStore((s) => s.pool.redeemableMint)
|
||||
const mints = useWalletStore((s) => s.mints)
|
||||
const largestAccounts = useLargestAccounts()
|
||||
const vaults = useVaults()
|
||||
|
||||
const numberFormat = new Intl.NumberFormat('en-US', {
|
||||
maximumSignificantDigits: 6,
|
||||
maximumFractionDigits: 2,
|
||||
})
|
||||
const totalRaised = vaults.usdc?.balance
|
||||
// const redeemableBalance = 9667.6464734
|
||||
const redeemableBalance = largestAccounts.redeemable?.balance || 0
|
||||
const mangoAvailable = vaults.usdc
|
||||
? (redeemableBalance * vaults.mango.balance) / vaults.usdc.balance
|
||||
: 0
|
||||
const redeemableSupply = calculateSupply(mints, redeemableMint)
|
||||
const mangoAvailable =
|
||||
vaults.mango && redeemableSupply > 0
|
||||
? (redeemableBalance * vaults.mango.balance) / redeemableSupply
|
||||
: 0
|
||||
|
||||
const [submitting, setSubmitting] = useState(false)
|
||||
const [loading, setLoading] = useState(true)
|
||||
|
@ -57,7 +61,7 @@ const RedeemModal = () => {
|
|||
}, [submitting])
|
||||
|
||||
const disableFormInputs = !connected || loading
|
||||
const disableSubmit = disableFormInputs || redeemableBalance <= 0
|
||||
const disableSubmit = disableFormInputs || redeemableBalance < 0
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
|
@ -364,7 +364,10 @@ const useWalletStore = create<WalletStore>((set, get) => ({
|
|||
|
||||
await sendTransaction({ transaction, wallet, connection })
|
||||
|
||||
await actions.fetchPool()
|
||||
await Promise.all([
|
||||
actions.fetchPool(),
|
||||
actions.fetchWalletTokenAccounts(),
|
||||
])
|
||||
},
|
||||
},
|
||||
set: (fn) => set(produce(fn)),
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { PublicKey } from '@solana/web3.js'
|
||||
import BN from 'bn.js'
|
||||
import { MintAccount, TokenAccount } from './tokens'
|
||||
|
||||
|
@ -15,3 +16,11 @@ export function calculateBalance(
|
|||
const mint = mints[account.mint.toBase58()]
|
||||
return mint ? fixedPointToNumber(account.amount, mint.decimals) : 0
|
||||
}
|
||||
|
||||
export function calculateSupply(
|
||||
mints: { [pk: string]: MintAccount },
|
||||
pk: PublicKey
|
||||
): number {
|
||||
const mint = mints[pk.toBase58()]
|
||||
return mint ? fixedPointToNumber(mint.supply, mint.decimals) : 0
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue