38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import React from 'react';
|
|
import * as Sentry from '@sentry/react';
|
|
import type { VegaStaking, VegaVesting } from '@vegaprotocol/smart-contracts';
|
|
|
|
import {
|
|
AppStateActionType,
|
|
useAppState,
|
|
} from '../contexts/app-state/app-state-context';
|
|
|
|
export function useGetAssociationBreakdown(
|
|
ethAddress: string,
|
|
staking: VegaStaking,
|
|
vesting: VegaVesting
|
|
): () => Promise<void> {
|
|
const { appDispatch } = useAppState();
|
|
|
|
const getAssociationBreakdown = React.useCallback(async () => {
|
|
try {
|
|
const [stakingAssociations, vestingAssociations] = await Promise.all([
|
|
staking.userTotalStakedByVegaKey(ethAddress),
|
|
vesting.userTotalStakedByVegaKey(ethAddress),
|
|
]);
|
|
|
|
appDispatch({
|
|
type: AppStateActionType.SET_ASSOCIATION_BREAKDOWN,
|
|
breakdown: {
|
|
stakingAssociations,
|
|
vestingAssociations,
|
|
},
|
|
});
|
|
} catch (err) {
|
|
Sentry.captureException(err);
|
|
}
|
|
}, [ethAddress, staking, vesting, appDispatch]);
|
|
|
|
return getAssociationBreakdown;
|
|
}
|