import { ApiError } from "@/lib/types" import { useState, useCallback } from "react" 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 } }