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