Hide document UI while typing

This commit is contained in:
Tom Moor
2023-09-04 22:10:27 -04:00
parent 2358c3d13d
commit 5f788012db
7 changed files with 49 additions and 12 deletions

View File

@@ -17,10 +17,14 @@ const activityEvents = [
/**
* Hook to detect user idle state.
*
* @param {number} timeToIdle
* @param timeToIdle The time in ms until idle
* @param events The events to listen to
* @returns boolean if the user is idle
*/
export default function useIdle(timeToIdle: number = 3 * Minute) {
export default function useIdle(
timeToIdle: number = 3 * Minute,
events = activityEvents
) {
const [isIdle, setIsIdle] = React.useState(false);
const timeout = React.useRef<ReturnType<typeof setTimeout>>();
@@ -40,15 +44,15 @@ export default function useIdle(timeToIdle: number = 3 * Minute) {
onActivity();
}, 1000);
activityEvents.forEach((eventName) =>
events.forEach((eventName) =>
window.addEventListener(eventName, handleUserActivityEvent)
);
return () => {
activityEvents.forEach((eventName) =>
events.forEach((eventName) =>
window.removeEventListener(eventName, handleUserActivityEvent)
);
};
}, [onActivity]);
}, [events, onActivity]);
return isIdle;
}