* Add yarn type-check * Rename to yarn typecheck * Fix a collection of type errors * Add typecheck to automated tests * add `dist` to exluded folders tsconfig --------- Co-authored-by: Ansh Nanda <anshnanda10@gmail.com>
32 lines
795 B
TypeScript
32 lines
795 B
TypeScript
import * as React from 'react'
|
|
|
|
/**
|
|
* Helper hook to run persistent timers on views
|
|
*/
|
|
export function useTimer(time: number, handler: () => void) {
|
|
const timer = React.useRef<undefined | NodeJS.Timeout>(undefined)
|
|
|
|
// function to restart the timer
|
|
const reset = React.useCallback(() => {
|
|
if (timer.current) {
|
|
clearTimeout(timer.current)
|
|
}
|
|
timer.current = setTimeout(handler, time)
|
|
}, [time, timer, handler])
|
|
|
|
// function to cancel the timer
|
|
const cancel = React.useCallback(() => {
|
|
if (timer.current) {
|
|
clearTimeout(timer.current)
|
|
timer.current = undefined
|
|
}
|
|
}, [timer])
|
|
|
|
// start the timer immediately
|
|
React.useEffect(() => {
|
|
reset()
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, [])
|
|
|
|
return [reset, cancel]
|
|
}
|