Skip to content

Commit ef461bc

Browse files
barnabasJmarkerikson
authored andcommitted
use symbol as key for forceQueryFn
1 parent 8c3f5dd commit ef461bc

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

packages/toolkit/src/query/core/buildInitiate.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ declare module './module' {
3434
}
3535
}
3636

37-
export interface StartQueryActionCreatorOptions {
37+
export const forceQueryFnSymbol = Symbol('forceQueryFn')
38+
39+
export interface StartQueryActionCreatorOptions {
3840
subscribe?: boolean
3941
forceRefetch?: boolean | number
4042
subscriptionOptions?: SubscriptionOptions
41-
forceQueryFn?: () => QueryReturnValue
43+
[forceQueryFnSymbol]?: () => QueryReturnValue
4244
}
4345

4446
type StartQueryActionCreator<
@@ -180,7 +182,6 @@ export type MutationActionCreatorResult<
180182
unsubscribe(): void
181183
}
182184

183-
184185
export function buildInitiate({
185186
serializeQueryArgs,
186187
queryThunk,
@@ -261,7 +262,15 @@ Features like automatic cache collection, automatic refetching etc. will not be
261262
endpointDefinition: QueryDefinition<any, any, any, any>
262263
) {
263264
const queryAction: StartQueryActionCreator<any> =
264-
(arg, { subscribe = true, forceRefetch, subscriptionOptions, forceQueryFn } = {}) =>
265+
(
266+
arg,
267+
{
268+
subscribe = true,
269+
forceRefetch,
270+
subscriptionOptions,
271+
[forceQueryFnSymbol]: forceQueryFn,
272+
} = {}
273+
) =>
265274
(dispatch, getState) => {
266275
const queryCacheKey = serializeQueryArgs({
267276
queryArgs: arg,
@@ -272,11 +281,11 @@ Features like automatic cache collection, automatic refetching etc. will not be
272281
type: 'query',
273282
subscribe,
274283
forceRefetch,
275-
forceQueryFn,
276284
subscriptionOptions,
277285
endpointName,
278286
originalArgs: arg,
279287
queryCacheKey,
288+
[forceQueryFnSymbol]: forceQueryFn,
280289
})
281290
const selector = (
282291
api.endpoints[endpointName] as ApiEndpointQuery<any, any>

packages/toolkit/src/query/core/buildThunks.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import type {
77
} from '../baseQueryTypes'
88
import type { RootState, QueryKeys, QuerySubstateIdentifier } from './apiState'
99
import { QueryStatus } from './apiState'
10-
import type { StartQueryActionCreatorOptions } from './buildInitiate'
10+
import {
11+
forceQueryFnSymbol,
12+
StartQueryActionCreatorOptions,
13+
} from './buildInitiate'
1114
import type {
1215
AssertTagTypes,
1316
EndpointDefinition,
@@ -144,7 +147,9 @@ function defaultTransformResponse(baseQueryReturnValue: unknown) {
144147

145148
export type MaybeDrafted<T> = T | Draft<T>
146149
export type Recipe<T> = (data: MaybeDrafted<T>) => void | MaybeDrafted<T>
147-
export type UpsertRecipe<T> = (data: MaybeDrafted<T> | undefined) => void | MaybeDrafted<T>
150+
export type UpsertRecipe<T> = (
151+
data: MaybeDrafted<T> | undefined
152+
) => void | MaybeDrafted<T>
148153

149154
export type PatchQueryDataThunk<
150155
Definitions extends EndpointDefinitions,
@@ -311,7 +316,7 @@ export function buildThunks<
311316
).initiate(args, {
312317
subscribe: false,
313318
forceRefetch: true,
314-
forceQueryFn: () => ({
319+
[forceQueryFnSymbol]: () => ({
315320
data: upsertRecipe(undefined),
316321
}),
317322
})
@@ -357,10 +362,12 @@ export function buildThunks<
357362
forced:
358363
arg.type === 'query' ? isForcedQuery(arg, getState()) : undefined,
359364
}
360-
if ('forceQueryFn' in arg && arg.forceQueryFn) {
361-
result = arg.forceQueryFn()
362-
363-
}else if (endpointDefinition.query) {
365+
366+
const forceQueryFn =
367+
arg.type === 'query' ? arg[forceQueryFnSymbol] : undefined
368+
if (forceQueryFn) {
369+
result = forceQueryFn()
370+
} else if (endpointDefinition.query) {
364371
result = await baseQuery(
365372
endpointDefinition.query(arg.originalArgs),
366373
baseQueryApi,

0 commit comments

Comments
 (0)