All files / app/hooks use-fetch-delegation-status.ts

0% Statements 0/14
0% Branches 0/3
0% Functions 0/2
0% Lines 0/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33                                                                 
import { useApi } from './use-api';
import { ApiResource } from '@models';
import { cvToHex, standardPrincipalCV, tupleCV } from '@stacks/transactions';
import { useQuery } from 'react-query';
 
export function useFetchDelegationStatus(contractId?: string, address?: string) {
  const api = useApi();
 
  const { data, refetch } = useQuery(
    [ApiResource.DelegationStatus, contractId, address],
    async ({ queryKey }) => {
      const [, innerContractId, innerAddress] = queryKey;
      Iif (!innerContractId || !innerAddress) return;
      const [contractAddress, contractName] = innerContractId.split('.');
      const key = cvToHex(
        tupleCV({
          stacker: standardPrincipalCV(innerAddress),
        })
      );
      return api.getContractDataMapEntry({
        contractAddress,
        contractName,
        key,
        mapName: 'delegation-state',
      }) as Promise<{ data: string }>;
    },
    {
      refetchInterval: 60_000,
    }
  );
  return { refetch, delegationStatus: data };
}