mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-26 13:02:50 +00:00
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { baseApi } from '../base-api';
|
|
|
|
export type ApiQueryArgs = {
|
|
url: string;
|
|
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
params?: Record<string, unknown>;
|
|
body?: unknown;
|
|
headers?: Record<string, string>;
|
|
cacheKey?: string | unknown[];
|
|
};
|
|
|
|
const queryApi = baseApi.injectEndpoints({
|
|
endpoints: (builder) => ({
|
|
apiQuery: builder.query<unknown, ApiQueryArgs>({
|
|
query: ({ url, params }) => ({ url, params }),
|
|
}),
|
|
apiMutation: builder.mutation<unknown, ApiQueryArgs>({
|
|
query: ({ url, method = 'POST', body, headers }) => ({
|
|
url,
|
|
method,
|
|
body,
|
|
headers,
|
|
}),
|
|
}),
|
|
}),
|
|
overrideExisting: false,
|
|
});
|
|
|
|
export const { useApiQueryQuery, useApiMutationMutation } = queryApi;
|
|
|
|
export function useApiQuery<TData = unknown>(
|
|
args: ApiQueryArgs,
|
|
options?: Parameters<typeof useApiQueryQuery>[1],
|
|
) {
|
|
return useApiQueryQuery(args, options) as ReturnType<typeof useApiQueryQuery> & {
|
|
data: TData | undefined;
|
|
};
|
|
}
|
|
|
|
export function useApiMutation<TData = unknown>() {
|
|
return useApiMutationMutation() as ReturnType<typeof useApiMutationMutation> & {
|
|
data: TData | undefined;
|
|
};
|
|
}
|