import { useCallback, useEffect, useState } from 'react'; import { apiFetch } from '../lib/api'; export type BlockedByDayEntry = { date: string; count: number; }; export type BlockedByConnectionEntry = { connectionId: string; title: string | null; email: string; providerLabel: string; count: number; }; type MailStatsState = { blockedByDay: BlockedByDayEntry[]; blockedByConnection: BlockedByConnectionEntry[]; loading: boolean; }; export function useMailStats(enabled: boolean) { const [state, setState] = useState({ blockedByDay: [], blockedByConnection: [], loading: false, }); const fetch = useCallback(async () => { if (!enabled) return; setState((s) => ({ ...s, loading: true })); try { const [byDay, byConn] = await Promise.all([ apiFetch('/api/mail/stats/blocked-by-day?days=30'), apiFetch('/api/mail/stats/blocked-by-connection'), ]); setState({ blockedByDay: byDay, blockedByConnection: byConn, loading: false }); } catch { setState((s) => ({ ...s, loading: false })); } }, [enabled]); useEffect(() => { fetch(); }, [fetch]); return { ...state, refresh: fetch }; }