fix calculation of redeemable amount

This commit is contained in:
Maximilian Schneider 2021-07-16 15:33:23 +02:00
parent 9b62f6ebf4
commit d084213183
3 changed files with 23 additions and 7 deletions

View File

@ -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 (
<>

View File

@ -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)),

View File

@ -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
}