42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { useCallback } from 'react';
|
|
import * as Sentry from '@sentry/react';
|
|
import { toBigNum } from '@vegaprotocol/utils';
|
|
import { useContracts } from '../contexts/contracts/contracts-context';
|
|
import { useAppState } from '../contexts/app-state/app-state-context';
|
|
import { useEthereumConfig } from '@vegaprotocol/web3';
|
|
|
|
export const useGetUserBalances = (account: string | undefined) => {
|
|
const { token, vesting } = useContracts();
|
|
const { config } = useEthereumConfig();
|
|
const {
|
|
appState: { decimals },
|
|
} = useAppState();
|
|
return useCallback(async () => {
|
|
if (!account || !config) return;
|
|
try {
|
|
const [b, w, stats, a] = await Promise.all([
|
|
vesting.user_total_all_tranches(account),
|
|
token.balanceOf(account),
|
|
vesting.user_stats(account),
|
|
token.allowance(account, config.staking_bridge_contract.address),
|
|
]);
|
|
|
|
const balance = toBigNum(b, decimals);
|
|
const walletBalance = toBigNum(w, decimals);
|
|
const lien = toBigNum(stats.lien, decimals);
|
|
const allowance = toBigNum(a, decimals);
|
|
|
|
return {
|
|
balanceFormatted: balance,
|
|
walletBalance,
|
|
lien,
|
|
allowance,
|
|
balance,
|
|
};
|
|
} catch (err) {
|
|
Sentry.captureException(err);
|
|
return null;
|
|
}
|
|
}, [account, config, decimals, token, vesting]);
|
|
};
|