Skip to content

Commit b3f7886

Browse files
Merge pull request #82 from DamianOsipiuk/useIsMutating/overloads
fix: useIsMutating overloads
2 parents d62e7e6 + a9957fe commit b3f7886

File tree

4 files changed

+50
-3
lines changed

4 files changed

+50
-3
lines changed

src/vue/__tests__/utils.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
isQueryKey,
44
parseFilterArgs,
55
parseMutationArgs,
6+
parseMutationFilterArgs,
67
parseQueryArgs,
78
updateState,
89
} from "../utils";
@@ -106,6 +107,23 @@ describe("utils", () => {
106107
});
107108
});
108109

110+
describe("parseMutationFilterArgs", () => {
111+
test("should default to empty filters", () => {
112+
const result = parseMutationFilterArgs(undefined);
113+
114+
expect(result).toEqual(undefined);
115+
});
116+
117+
test("should merge mutation key with filters", () => {
118+
const filters = { fetching: true };
119+
120+
const result = parseMutationFilterArgs("key", filters);
121+
const expected = { ...filters, mutationKey: "key" };
122+
123+
expect(result).toEqual(expected);
124+
});
125+
});
126+
109127
describe("updateState", () => {
110128
test("should update first object with values from the second one", () => {
111129
const origin = { option1: "a", option2: "b", option3: "c" };

src/vue/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ export { useInfiniteQuery } from "./useInfiniteQuery";
99
export { useMutation } from "./useMutation";
1010
export { useIsFetching } from "./useIsFetching";
1111
export { useIsMutating } from "./useIsMutating";
12-
export { parseFilterArgs, parseMutationArgs, parseQueryArgs } from "./utils";
12+
export {
13+
parseFilterArgs,
14+
parseMutationArgs,
15+
parseQueryArgs,
16+
parseMutationFilterArgs,
17+
} from "./utils";
1318

1419
export type { UseQueryOptions } from "./useQuery";
1520
export type { UseInfiniteQueryOptions } from "./useInfiniteQuery";

src/vue/useIsMutating.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
import { onUnmounted, Ref, ref } from "vue-demi";
2+
import type { QueryKey } from "react-query/types/core";
23
import type { MutationFilters as MF } from "react-query/types/core/utils";
34

45
import { useQueryClient } from "./useQueryClient";
6+
import { parseMutationFilterArgs } from "./utils";
57
import type { WithQueryClientKey } from "./types";
68

79
export type MutationFilters = WithQueryClientKey<MF>;
810

9-
export function useIsMutating(filters?: MutationFilters): Ref<number> {
11+
export function useIsMutating(filters?: MutationFilters): Ref<number>;
12+
export function useIsMutating(
13+
queryKey?: QueryKey,
14+
filters?: MutationFilters
15+
): Ref<number>;
16+
export function useIsMutating(
17+
arg1?: QueryKey | MutationFilters,
18+
arg2?: MutationFilters
19+
): Ref<number> {
20+
const filters = parseMutationFilterArgs(arg1, arg2);
1021
const queryClient = useQueryClient(filters?.queryClientKey);
1122

1223
const isMutating = ref(queryClient.isMutating(filters));

src/vue/utils.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import type {
77
QueryKey,
88
QueryOptions,
99
} from "react-query/types/core";
10-
import type { QueryFilters } from "react-query/types/core/utils";
10+
import { QueryFilters } from "./useIsFetching";
11+
import { MutationFilters } from "./useIsMutating";
1112

1213
export function isQueryKey(value: unknown): value is QueryKey {
1314
return typeof value === "string" || Array.isArray(value);
@@ -67,6 +68,18 @@ export function parseMutationArgs<
6768
return arg1;
6869
}
6970

71+
export function parseMutationFilterArgs(
72+
arg1?: QueryKey | MutationFilters,
73+
arg2?: MutationFilters
74+
): MutationFilters | undefined {
75+
if (isQueryKey(arg1)) {
76+
return Object.assign(arg2, {
77+
mutationKey: arg1,
78+
});
79+
}
80+
return arg1;
81+
}
82+
7083
export function updateState(
7184
state: Record<string, unknown>,
7285
update: Record<string, any>

0 commit comments

Comments
 (0)