@openapi-qraft/react
Version:
OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.
33 lines (28 loc) • 1.22 kB
text/typescript
import type { QueryClient } from '@tanstack/react-query';
import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
import type { OperationSchema } from './requestFn.js';
import { composeMutationFilters } from './composeMutationFilters.js';
/**
* Calls a query client method with mutation filters and options,
* and automatically composes the `MutationKey` based on the schema and parameters.
*/
export function callQueryClientMethodWithMutationFilters<
QFMethod extends QueryFilterMethods,
>(
qraftOptions: CreateAPIQueryClientOptions,
queryFilterMethod: QFMethod,
schema: OperationSchema,
args: [...Parameters<(typeof QueryClient.prototype)[QFMethod]>, QueryClient]
): ReturnType<(typeof QueryClient.prototype)[QFMethod]> {
const filters = args[0];
const queryClient = qraftOptions.queryClient;
// @ts-expect-error - Too complex to type
return queryClient[queryFilterMethod](
composeMutationFilters(schema, filters as never),
// @ts-expect-error - Argument types are too complex
...args.slice(1, args.length)
);
}
type QueryFiltersMethod<QFMethod extends keyof typeof QueryClient.prototype> =
QFMethod;
type QueryFilterMethods = QueryFiltersMethod<'isMutating'>;