import { useEffect, useMemo, useState } from "react"; import { IssueModal } from "@/components/issue-modal"; import { useSessionSafe } from "@/components/session-provider"; import { TimerControls } from "@/components/timer-controls"; import { getWorkTimeMs } from "@/components/timer-display"; import { Button } from "@/components/ui/button"; import { useActiveTimers, useInactiveTimers, useIssueById } from "@/lib/query/hooks"; import { issueID } from "@/lib/utils"; const REFRESH_INTERVAL_MS = 10000; export function ActiveTimersOverlay() { const session = useSessionSafe(); const { data: activeTimers = [] } = useActiveTimers({ refetchInterval: REFRESH_INTERVAL_MS, enabled: Boolean(session?.user), }); const [tick, setTick] = useState(0); const hasRunning = useMemo(() => activeTimers.some((timer) => timer.isRunning), [activeTimers]); useEffect(() => { if (!hasRunning) return; const interval = window.setInterval(() => { setTick((value) => value + 1); }, 1000); return () => window.clearInterval(interval); }, [hasRunning]); void tick; if (!session?.user || activeTimers.length === 0) return null; return (