import { useState, useCallback, useEffect, useRef } from 'react'; export interface UseListDataReturn { data: T[]; loading: boolean; refresh: () => Promise; } export function useListData(fetchFn: () => Promise, autoFetch = true): UseListDataReturn { const [data, setData] = useState([]); const [loading, setLoading] = useState(false); const fetchFnRef = useRef(fetchFn); fetchFnRef.current = fetchFn; const refresh = useCallback(async () => { setLoading(true); try { const result = await fetchFnRef.current(); setData(result); } catch { setData([]); } setLoading(false); }, []); useEffect(() => { if (autoFetch) { refresh(); } }, [refresh, autoFetch]); return { data, loading, refresh }; }