cyb/src/features/staking/delegation/useDelegation.ts

import { selectCurrentAddress } from 'src/redux/features/pocket';
import { useAppSelector } from 'src/redux/hooks';
import useQueryClientMethod from '../../../hooks/useQueryClientMethod';

const methodName = 'delegation';

type MethodParams = NonNullable<Parameters<typeof useQueryClientMethod<typeof methodName>>[1]>;

type Params = MethodParams;

function useDelegationFunc(...[delegatorAddress, validatorAddress]: Params) {
  const { data, ...rest } = useQueryClientMethod<typeof methodName>(methodName, [
    delegatorAddress,
    validatorAddress,
  ]);

  const { delegationResponse } = data || {};

  return {
    data: delegationResponse
      ? {
          validatorAddress: delegationResponse?.delegation?.validatorAddress,
          shares: delegationResponse?.delegation?.shares,
          balance: delegationResponse?.balance,
        }
      : undefined,
    ...rest,
  };
}

// TODO: add skip somewhere
function useDelegation(validatorAddress: string) {
  const address = useAppSelector(selectCurrentAddress);

  return useDelegationFunc(address, validatorAddress);
}

export default useDelegation;

Synonyms

pussy-ts/src/features/staking/delegation/useDelegation.ts

Neighbours