@digital-ai/plugin-dai-release
Version:
Frontend functionalities for the dai-release backstage plugin
29 lines (26 loc) • 1.09 kB
JavaScript
import { useState, useRef, useEffect } from 'react';
import { useAsyncRetry } from 'react-use';
const arraysEqual = (prevOthers, currentOthers) => prevOthers.length === currentOthers.length && prevOthers.every((val, index) => val === currentOthers[index]);
const useAsyncRetryWithSelectiveDeps = (asyncFn, page, setPage, deps) => {
const [trigger, setTrigger] = useState([page, ...deps]);
const prevPageRef = useRef(page);
const prevDepsRef = useRef(deps);
useEffect(() => {
const prevPage = prevPageRef.current;
const prevDeps = prevDepsRef.current;
const depsChanged = !arraysEqual(prevDeps, deps);
const pageChanged = prevPage !== page;
if (depsChanged) {
prevPageRef.current = 0;
setPage(0);
setTrigger([0, ...deps]);
} else if (pageChanged) {
prevPageRef.current = page;
setTrigger([page, ...deps]);
}
prevDepsRef.current = deps;
}, [page, setPage, deps]);
return useAsyncRetry(asyncFn, trigger);
};
export { useAsyncRetryWithSelectiveDeps as default };
//# sourceMappingURL=stateSelectiveDeps.esm.js.map