Files
viberoom-web/src/features/restart-30s/model/useRestart30s.ts

37 lines
750 B
TypeScript

'use client';
import { useEffect, useRef, useState } from 'react';
const MODE_DURATION_MS = 2000;
export const useRestart30s = () => {
const [isBreatheMode, setBreatheMode] = useState(false);
const resetTimerRef = useRef<number | null>(null);
const clearTimers = () => {
if (resetTimerRef.current !== null) {
window.clearTimeout(resetTimerRef.current);
resetTimerRef.current = null;
}
};
useEffect(() => {
return () => {
clearTimers();
};
}, []);
const triggerRestart = () => {
clearTimers();
setBreatheMode(true);
resetTimerRef.current = window.setTimeout(() => {
setBreatheMode(false);
}, MODE_DURATION_MS);
};
return {
isBreatheMode,
triggerRestart,
};
};