2021-04-25 15:04:32 -07:00
|
|
|
import BN from 'bn.js'
|
|
|
|
|
|
|
|
import useWalletStore from '../stores/useWalletStore'
|
|
|
|
|
|
|
|
const Balances = () => {
|
|
|
|
var { tokenAccounts, mints } = useWalletStore((state) => state)
|
|
|
|
|
2021-04-25 15:47:15 -07:00
|
|
|
function fixedPointToNumber(value: BN, decimals: number) {
|
2021-04-25 15:04:32 -07:00
|
|
|
const divisor = new BN(10).pow(new BN(decimals))
|
|
|
|
const quotient = value.div(divisor)
|
|
|
|
const remainder = value.mod(divisor)
|
|
|
|
return quotient.toNumber() + remainder.toNumber() / divisor.toNumber()
|
|
|
|
}
|
|
|
|
|
|
|
|
function calculateBalance(a) {
|
|
|
|
const mint = mints[a.account.mint.toBase58()]
|
2021-04-25 15:47:15 -07:00
|
|
|
return mint ? fixedPointToNumber(a.account.amount, mint.decimals) : 0
|
2021-04-25 15:04:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
const displayedBalances = tokenAccounts
|
|
|
|
.map((a) => `${a.publicKey.toBase58()}: ${calculateBalance(a)}`)
|
|
|
|
.sort()
|
|
|
|
|
|
|
|
return (
|
|
|
|
<ul>
|
|
|
|
{displayedBalances.map((b, i) => (
|
|
|
|
<li key={i}>{b}</li>
|
|
|
|
))}
|
|
|
|
</ul>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default Balances
|