// src/hooks/useActiveAppTracker.ts import { useEffect, useRef } from "react"; import { useDispatch } from "react-redux"; import { setActiveWindow, WindowInfo } from "../store/windowSlice"; export const useActiveAppTracker = ( isTracking: boolean, projectId: string, projectName: string ) => { const dispatch = useDispatch(); const lastActiveRef = useRef(null); useEffect(() => { if (!isTracking || !projectId) { console.log(" Tracking not active or project not selected"); return; } console.log(` Tracking started for project: ${projectName}`); const fetchActiveApp = async () => { try { const details = (await window.electron.getActiveAppDetails()) as WindowInfo; if (!details || !details.id) return; const prev = lastActiveRef.current; const hasChanged = !prev || prev.title !== details.title || prev.owner.processId !== details.owner.processId; if (hasChanged) { console.log("🪟 Window changed:", details.title); dispatch(setActiveWindow({ window: details, projectId, projectName })); lastActiveRef.current = details; } } catch (error) { console.error("❌ Failed to fetch active app:", error); } }; fetchActiveApp(); const intervalId = setInterval(fetchActiveApp, 5000); return () => { console.log("🛑 Stopping active window tracker"); clearInterval(intervalId); }; }, [isTracking, dispatch, projectId, projectName]); };