Files
flipper/desktop/plugins/public/ui-debugger/hooks/useDelay.tsx
Luke De Feo 74ecbec9e6 Clean up tooltip on long hover for visualiser
Summary:
Previously every single visualisation node would have jsx for a tooltip and would control its own tooltop. now we have the overlay we can have just one. this improves perf a bit and simplifies the code.

i also increased the delay slightly

Reviewed By: lblasa

Differential Revision: D46274098

fbshipit-source-id: cb8afbc4804c549da9abf33d69aaf190397f74c7
2023-06-07 06:20:13 -07:00

31 lines
753 B
TypeScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {useEffect, useRef, useState} from 'react';
export function useDelay(delayTimeMs: number) {
const [isDone, setIsDone] = useState(false);
const delayTimerStarted = useRef(false);
useEffect(() => {
let handle: NodeJS.Timeout | null = null;
if (delayTimerStarted.current === false) {
handle = setTimeout(() => setIsDone(true), delayTimeMs);
delayTimerStarted.current = true;
}
return () => {
if (handle !== null) {
clearTimeout(handle);
}
};
}, [delayTimeMs]);
return isDone;
}