UNPKG

@digital-ai/plugin-dai-release

Version:

Frontend functionalities for the dai-release backstage plugin

29 lines (26 loc) 1.09 kB
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