diff --git a/src/tools/hooks/useSetSafeInterval.tsx b/src/tools/hooks/useSetSafeInterval.tsx new file mode 100644 index 000000000..4bedbc15e --- /dev/null +++ b/src/tools/hooks/useSetSafeInterval.tsx @@ -0,0 +1,22 @@ +import { useEffect, useRef } from 'react'; + +export function useSetSafeInterval() { + const timers = useRef([]); + + function setSafeInterval(callback: () => void, delay: number) { + const newInterval = setInterval(callback, delay); + timers.current.push(newInterval); + return newInterval; + } + + useEffect( + () => () => { + timers.current.forEach((t) => { + clearInterval(t); + }); + }, + [] + ); + + return setSafeInterval; +}