import { useState, useEffect, useCallback } from 'react'; import { useDubs } from '../provider'; import type { QueryResult } from '../types'; export interface HighlightVideo { videoId: string; title: string; channelTitle: string; thumbnail: string; publishedAt: string; } export function useHighlights(league?: string, limit: number = 8): QueryResult { const { client } = useDubs(); const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const fetchData = useCallback(async () => { setLoading(true); setError(null); try { const qs = new URLSearchParams(); if (league) qs.set('league', league); qs.set('limit', String(limit)); const res = await (client as any).request('GET', `/highlights?${qs.toString()}`); setData(res.videos || []); } catch (err) { setError(err instanceof Error ? err : new Error(String(err))); } finally { setLoading(false); } }, [client, league, limit]); useEffect(() => { fetchData(); }, [fetchData]); return { data, loading, error, refetch: fetchData }; }