import { useEffect, useRef, useCallback } from 'react'; interface UseAutoSaveOptions { onSave: () => Promise; debounceMs?: number; enabled?: boolean; } export const useAutoSave = ({ onSave, debounceMs = 2000, enabled = true, }: UseAutoSaveOptions) => { const timeoutRef = useRef(null); const lastSaveRef = useRef(0); const triggerSave = useCallback(() => { if (!enabled) return; if (timeoutRef.current) { clearTimeout(timeoutRef.current); } timeoutRef.current = setTimeout(async () => { try { await onSave(); lastSaveRef.current = Date.now(); } catch (error) { console.error('Auto-save failed:', error); } }, debounceMs); }, [onSave, debounceMs, enabled]); useEffect(() => { return () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } }; }, []); return { triggerSave, lastSaveTime: lastSaveRef.current }; };