openreplay/frontend/app/hooks/useCancelableTimeout.ts
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

19 lines
595 B
TypeScript

import { useRef, useEffect } from 'react';
export default function useCancelableTimeout(
onTimeout: () => void,
onCancel: () => void,
delay: number,
): [() => void, () => void] {
const idRef = useRef<ReturnType<typeof setTimeout>>();
const triggerTimeout = () => {
clearTimeout(idRef.current);
idRef.current = setTimeout(onTimeout, delay);
};
const cancelTimeout = () => {
clearTimeout(idRef.current);
onCancel();
};
useEffect(() => () => clearTimeout(idRef.current), []); // auto-cancel without callback (on clean)
return [triggerTimeout, cancelTimeout];
}