Files
streamyfin/hooks/useControlsVisibility.ts
Fredrik Burmester 09363bffdc wip
2024-09-15 21:36:59 +02:00

26 lines
764 B
TypeScript

import { useRef, useCallback, useState, useEffect } from "react";
export const useControlsVisibility = (timeout: number = 3000) => {
const [isVisible, setIsVisible] = useState(true);
const hideControlsTimerRef = useRef<NodeJS.Timeout | null>(null);
const showControls = useCallback(() => {
setIsVisible(true);
if (hideControlsTimerRef.current) {
clearTimeout(hideControlsTimerRef.current);
}
hideControlsTimerRef.current = setTimeout(() => {
setIsVisible(false);
}, timeout);
}, [timeout]);
const hideControls = useCallback(() => {
setIsVisible(false);
if (hideControlsTimerRef.current) {
clearTimeout(hideControlsTimerRef.current);
}
}, []);
return { isVisible, showControls, hideControls };
};