useWaitingDigitalSignature

 avatar
unknown
javascript
2 years ago
1.4 kB
7
Indexable
import { useState, useEffect } from "react";
import { useParams } from "react-router-dom";
import { fetchSpecificationState } from "apis/SPEC";
import { useRedirect, useApiPolling } from "hooks";
import { ParamTypes } from "../../types";

const useWaitingDigitalSignature = () => {
  const { redirectToSpecificationDetails } = useRedirect();

  const { specificationState, specificationId } = useParams<ParamTypes>();

  const [newSpecificationState, setNewSpecificationState] = useState(
    specificationState
  );

  useEffect(() => {
    if (newSpecificationState !== specificationState) {
      redirectToSpecificationDetails(specificationId);
    }
  }, [newSpecificationState]);

  const fetchState = async () => {
    try {
      const { data } = await fetchSpecificationState({ id: specificationId });
      setNewSpecificationState(data.state);
    } catch (_) {}
  };

  useApiPolling({
    pollingFunction: fetchState,
    stopPolling: newSpecificationState !== specificationState,
    ignoreMaximumApiCalls: true,
  });

  // useInterval(async () => {
  //   try {
  //     const { data } = await fetchSpecificationState({ id: specificationId });
  //     setNewSpecificationState(data.state);
  //   } catch (_) {}
  // }, intervalForGetSpecificationState);
};

export default useWaitingDigitalSignature;
Editor is loading...