41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
|
import React from 'react';
|
||
|
import * as Sentry from '@sentry/react';
|
||
|
import type {
|
||
|
VegaStaking,
|
||
|
VegaVesting,
|
||
|
} from '@vegaprotocol/smart-contracts-sdk';
|
||
|
|
||
|
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;
|
||
|
}
|