import { useCallback, useEffect, useRef, useState } from 'react' import { datasetsApi } from '../services/api' import type { SourceFreshnessReport } from '../types' export function useSourceFreshness(selectedProjectId: string | null) { const [report, setReport] = useState(null) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const requestSequence = useRef(0) const refresh = useCallback(async () => { const requestId = ++requestSequence.current if (!selectedProjectId) { setReport(null) setError(null) setLoading(false) return } setLoading(true) setError(null) try { const nextReport = await datasetsApi.sourceFreshness(selectedProjectId) if (requestSequence.current === requestId) { setReport(nextReport) } } catch (caught) { if (requestSequence.current === requestId) { setError(caught instanceof Error ? caught.message : 'De broncontrole kon niet worden geladen.') } } finally { if (requestSequence.current === requestId) { setLoading(false) } } }, [selectedProjectId]) useEffect(() => { void refresh() return () => { requestSequence.current += 1 } }, [refresh]) return { report, loading, error, refresh } }