Skip to content

Commit 688ede7

Browse files
committed
fix asMutationBuilder
1 parent f185bb2 commit 688ede7

File tree

4 files changed

+8
-3
lines changed

4 files changed

+8
-3
lines changed

examples/vite/src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import './mocks';
22
import { useRef, useState } from 'react';
33
import { CommentData, PostData, baseUrl } from './mocks';
44
import './App.css';
5-
import { HttpMutationBuilder, HttpQueryBuilder, useOperateOnTags } from 'react-query-builder';
5+
import { HttpQueryBuilder, useOperateOnTags } from 'react-query-builder';
66
import { queryClient } from './client';
77

88
const baseQuery = new HttpQueryBuilder({ queryClient }).withBaseUrl(baseUrl);
9-
const baseMutation = new HttpMutationBuilder({ queryClient }).withBaseUrl(baseUrl);
9+
const baseMutation = baseQuery.asMutationBuilder();
1010

1111
const resetMutation = baseMutation.withPath('/reset').withConfig({ invalidates: '*' });
1212

src/builder/HttpQueryBuilder.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { ExtractPathParams } from '../http/types';
22
import { Prettify, WithOptional } from '../types/utils';
33
import { HttpMutationBuilder } from './HttpMutationBuilder';
4+
import { MutationBuilder } from './MutationBuilder';
45
import { QueryBuilder, QueryBuilderConfig } from './QueryBuilder';
56
import { HttpBaseHeaders, HttpBaseParams, HttpBaseSearch, HttpBuilderTypeTemplate } from './types';
67
import { PrettifyWithVars } from './types';
@@ -55,4 +56,5 @@ export class HttpQueryBuilder<T extends HttpBuilderTypeTemplate = HttpBuilderTyp
5556
declare withError: <TError>() => HttpQueryBuilder<Prettify<T & { error: TError }>>;
5657
declare withVars: <TVars = T['vars']>(vars?: TVars) => HttpQueryBuilder<PrettifyWithVars<T, Partial<TVars>>>;
5758
declare asMutationBuilder: () => HttpMutationBuilder<T>;
59+
protected override MutationBuilderConstructor: typeof MutationBuilder = HttpMutationBuilder as typeof MutationBuilder;
5860
}

src/builder/QueryBuilder.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,10 @@ export class QueryBuilder<T extends BuilderTypeTemplate = BuilderTypeTemplate> e
208208
return this;
209209
}
210210

211+
protected MutationBuilderConstructor: typeof MutationBuilder = MutationBuilder;
212+
211213
asMutationBuilder(): MutationBuilder<T> {
212-
return new MutationBuilder({
214+
return new this.MutationBuilderConstructor({
213215
queryFn: this.config.queryFn,
214216
queryClient: this.config.queryClient,
215217
mergeVars: this.config.mergeVars,

src/tags/mergeTagOptions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export function mergeTagOptions<TVars = void, TData = any, TErr = any, TTag exte
99
tagsList = tagsList.filter(Boolean) as QueryTagOption<TVars, TData, TErr, TTag>[];
1010

1111
if (tagsList.length === 0) return undefined;
12+
if (tagsList.length === 1) return tagsList[0];
1213
if (tagsList.every((tag) => Array.isArray(tag) || typeof tag !== 'function')) return tagsList.flat() as TTag[];
1314

1415
const callback: QueryTagCallback<TVars, TData, TErr, TTag> = (...args) =>

0 commit comments

Comments
 (0)