export const useApiData = <T = unknown, R = T>(
key: string,
endpoint: string | Ref<string> | ComputedRef<string>,
options: Omit<AsyncDataOptions<ApiResponse<T>, R>, 'transform'> & {
query?: Record<string, any>;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
body?: any;
transform?: (data: ApiResponse<T>) => R;
onResponse?: (context: {
request: any;
response: any;
options: any;
}) => void | Promise<void>;
onResponseError?: (context: {
request: any;
response: any;
options: any;
}) => void | Promise<void>;
} = {},
) => {
... // ommitted
const api = useStandardizedApi();
return useAsyncData<ApiResponse<T>, StandardErrorResponse, R>(
key,
() =>
api.handleApiCall<T>(unref(endpoint), {
method,
query,
body,
onResponse,
onResponseError,
}),
{
...asyncDataOptions,
transform: transform as AsyncDataOptions<ApiResponse<T>, R>['transform'],
},
);
};
export const useApiData = <T = unknown, R = T>(
key: string,
endpoint: string | Ref<string> | ComputedRef<string>,
options: Omit<AsyncDataOptions<ApiResponse<T>, R>, 'transform'> & {
query?: Record<string, any>;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
body?: any;
transform?: (data: ApiResponse<T>) => R;
onResponse?: (context: {
request: any;
response: any;
options: any;
}) => void | Promise<void>;
onResponseError?: (context: {
request: any;
response: any;
options: any;
}) => void | Promise<void>;
} = {},
) => {
... // ommitted
const api = useStandardizedApi();
return useAsyncData<ApiResponse<T>, StandardErrorResponse, R>(
key,
() =>
api.handleApiCall<T>(unref(endpoint), {
method,
query,
body,
onResponse,
onResponseError,
}),
{
...asyncDataOptions,
transform: transform as AsyncDataOptions<ApiResponse<T>, R>['transform'],
},
);
};