import { useState, useEffect, useCallback } from "react"; /** * Generic async data fetching hook for mobile screens. */ export function useAsyncData( fetcher: () => Promise, deps: unknown[] = [], ) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const execute = useCallback(async () => { setLoading(true); setError(null); try { const result = await fetcher(); setData(result); } catch (err) { setError(err instanceof Error ? err : new Error(String(err))); } finally { setLoading(false); } // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); useEffect(() => { execute(); }, [execute]); return { data, loading, error, refetch: execute }; }