signoz/frontend/src/hooks/useInterval.ts
palashgdev 50270281e3
fix: Logs Live Tail is fixed (#2380)
* logs is updated

* fix: log live tail is updated

* fix: live tail is fixed

* chore: build is fixed

* chore: useEffect is removed

* chore: getLogsAggregate callback is added in the useEffect
2023-03-01 17:18:02 +05:30

36 lines
559 B
TypeScript

import { useEffect, useRef } from 'react';
function useInterval(
callback: () => void,
delay: number,
enabled = true,
): void {
const savedCallback = useRef<() => void>();
useEffect(() => {
savedCallback.current = callback;
});
useEffect(() => {
function tick(): void {
if (savedCallback.current) {
savedCallback.current();
}
}
let id: NodeJS.Timer;
if (enabled) {
id = setInterval(tick, delay);
}
return (): void => {
if (id) {
clearInterval(id);
}
};
}, [delay, enabled]);
}
export default useInterval;