import { useCallback, useState } from 'react' import { type ApiError } from '@/lib/types' export const useLoomartApi = ( apiFn: (params: TParams) => Promise<{ data?: TData; error?: ApiError }>, options?: { enabled?: boolean initialLoad?: boolean }, ) => { const [data, setData] = useState() const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const execute = useCallback( async (params?: TParams) => { try { setLoading(true) setError(null) const { data, error } = await apiFn(params as TParams) if (error) { setError(error) return { data: undefined, error } } setData(data) return { data, error: null } } catch (e) { const err = e as ApiError setError(err) return { data: undefined, error: err } } finally { setLoading(false) } }, [apiFn], ) return { data, loading, error, execute, refetch: execute } }