All files / app/hooks use-watch-stacking-tx.ts

0% Statements 0/21
0% Branches 0/3
0% Functions 0/5
0% Lines 0/18

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 34 35 36 37                                                                         
import { useApi } from './use-api';
import { watchContractExecution } from '@api/watch-contract-execution';
import { RootState } from '@store/index';
import { selectAddress } from '@store/keys';
import {
  selectActiveStackingTxId,
  selectPoxInfo,
  fetchStackerInfo,
  removeStackingTx,
  fetchAccountBalanceLocked,
} from '@store/stacking';
import { safeAwait } from '@utils/safe-await';
import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
 
export function useWatchStackingTx() {
  const api = useApi();
  const dispatch = useDispatch();
 
  const { address, activeStackingTx } = useSelector((state: RootState) => ({
    address: selectAddress(state),
    activeStackingTx: selectActiveStackingTxId(state),
    poxInfo: selectPoxInfo(state),
  }));
 
  useEffect(() => {
    async function run() {
      Iif (!activeStackingTx || !address) return;
      await safeAwait(watchContractExecution({ nodeUrl: api.baseUrl, txId: activeStackingTx }));
      dispatch(fetchStackerInfo(address));
      dispatch(fetchAccountBalanceLocked(address));
      setTimeout(() => dispatch(removeStackingTx()), 2000);
    }
    void run();
  }, [activeStackingTx, address, api.baseUrl, dispatch]);
}