Skip to content

Commit 22e4074

Browse files
authored
Add extra to BaseQueryApi (#1378)
Co-authored-by: Ricardo Sanchez <ricardosancheze@outlook.com>
1 parent cb3e158 commit 22e4074

File tree

5 files changed

+59
-1
lines changed

5 files changed

+59
-1
lines changed

packages/toolkit/src/query/baseQueryTypes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export interface BaseQueryApi {
55
signal: AbortSignal
66
dispatch: ThunkDispatch<any, any, any>
77
getState: () => unknown
8+
extra: unknown
89
}
910

1011
export type QueryReturnValue<T = unknown, E = unknown, M = unknown> =

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ export function buildThunks<
259259
ThunkApiMetaConfig & { state: RootState<any, string, ReducerPath> }
260260
> = async (
261261
arg,
262-
{ signal, rejectWithValue, fulfillWithValue, dispatch, getState }
262+
{ signal, rejectWithValue, fulfillWithValue, dispatch, getState, extra }
263263
) => {
264264
const endpointDefinition = endpointDefinitions[arg.endpointName]
265265

@@ -271,6 +271,7 @@ export function buildThunks<
271271
signal,
272272
dispatch,
273273
getState,
274+
extra,
274275
}
275276
if (endpointDefinition.query) {
276277
result = await baseQuery(

packages/toolkit/src/query/tests/buildThunks.test.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { configureStore } from '@reduxjs/toolkit'
22
import { createApi } from '@reduxjs/toolkit/query/react'
33

44
import { renderHook } from '@testing-library/react-hooks'
5+
import type { BaseQueryApi } from '../baseQueryTypes'
56
import { withProvider } from './helpers'
67

78
test('handles a non-async baseQuery without error', async () => {
@@ -49,6 +50,28 @@ test('handles a non-async baseQuery without error', async () => {
4950
})
5051
})
5152

53+
test('passes the extraArgument property to the baseQueryApi', async () => {
54+
const baseQuery = (_args: any, api: BaseQueryApi) => ({ data: api.extra })
55+
const api = createApi({
56+
baseQuery,
57+
endpoints: (build) => ({
58+
getUser: build.query<unknown, void>({
59+
query: () => '',
60+
}),
61+
}),
62+
})
63+
const store = configureStore({
64+
reducer: {
65+
[api.reducerPath]: api.reducer,
66+
},
67+
middleware: (gDM) =>
68+
gDM({ thunk: { extraArgument: 'cakes' } }).concat(api.middleware),
69+
})
70+
const { getUser } = api.endpoints
71+
const { data } = await store.dispatch(getUser.initiate())
72+
expect(data).toBe('cakes')
73+
})
74+
5275
describe('re-triggering behavior on arg change', () => {
5376
const api = createApi({
5477
baseQuery: () => ({ data: undefined }),

packages/toolkit/src/query/tests/errorHandling.test.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ describe('fetchBaseQuery', () => {
4141
signal: new AbortController().signal,
4242
dispatch: storeRef.store.dispatch,
4343
getState: storeRef.store.getState,
44+
extra: undefined,
4445
},
4546
{}
4647
)
@@ -61,6 +62,7 @@ describe('fetchBaseQuery', () => {
6162
signal: new AbortController().signal,
6263
dispatch: storeRef.store.dispatch,
6364
getState: storeRef.store.getState,
65+
extra: undefined,
6466
},
6567
{}
6668
)

packages/toolkit/src/query/tests/fetchBaseQuery.test.tsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ describe('fetchBaseQuery', () => {
7979
signal: new AbortController().signal,
8080
dispatch: storeRef.store.dispatch,
8181
getState: storeRef.store.getState,
82+
extra: undefined,
8283
},
8384
{}
8485
)
@@ -95,6 +96,7 @@ describe('fetchBaseQuery', () => {
9596
signal: new AbortController().signal,
9697
dispatch: storeRef.store.dispatch,
9798
getState: storeRef.store.getState,
99+
extra: undefined,
98100
},
99101
{}
100102
)
@@ -113,6 +115,7 @@ describe('fetchBaseQuery', () => {
113115
signal: new AbortController().signal,
114116
dispatch: storeRef.store.dispatch,
115117
getState: storeRef.store.getState,
118+
extra: undefined,
116119
},
117120
{}
118121
)
@@ -136,6 +139,7 @@ describe('fetchBaseQuery', () => {
136139
signal: new AbortController().signal,
137140
dispatch: storeRef.store.dispatch,
138141
getState: storeRef.store.getState,
142+
extra: undefined,
139143
},
140144
{}
141145
)
@@ -165,6 +169,7 @@ describe('fetchBaseQuery', () => {
165169
signal: new AbortController().signal,
166170
dispatch: storeRef.store.dispatch,
167171
getState: storeRef.store.getState,
172+
extra: undefined,
168173
},
169174
{}
170175
)
@@ -189,6 +194,7 @@ describe('fetchBaseQuery', () => {
189194
signal: new AbortController().signal,
190195
dispatch: storeRef.store.dispatch,
191196
getState: storeRef.store.getState,
197+
extra: undefined,
192198
},
193199
{}
194200
)
@@ -218,6 +224,7 @@ describe('fetchBaseQuery', () => {
218224
signal: new AbortController().signal,
219225
dispatch: storeRef.store.dispatch,
220226
getState: storeRef.store.getState,
227+
extra: undefined,
221228
},
222229
{}
223230
)
@@ -245,6 +252,7 @@ describe('fetchBaseQuery', () => {
245252
signal: new AbortController().signal,
246253
dispatch: storeRef.store.dispatch,
247254
getState: storeRef.store.getState,
255+
extra: undefined,
248256
},
249257
{}
250258
)
@@ -275,6 +283,7 @@ describe('fetchBaseQuery', () => {
275283
signal: new AbortController().signal,
276284
dispatch: storeRef.store.dispatch,
277285
getState: storeRef.store.getState,
286+
extra: undefined,
278287
},
279288
{}
280289
))
@@ -293,6 +302,7 @@ describe('fetchBaseQuery', () => {
293302
signal: new AbortController().signal,
294303
dispatch: storeRef.store.dispatch,
295304
getState: storeRef.store.getState,
305+
extra: undefined,
296306
},
297307
{}
298308
))
@@ -318,6 +328,7 @@ describe('fetchBaseQuery', () => {
318328
signal: new AbortController().signal,
319329
dispatch: storeRef.store.dispatch,
320330
getState: storeRef.store.getState,
331+
extra: undefined,
321332
},
322333
{}
323334
))
@@ -341,6 +352,7 @@ describe('fetchBaseQuery', () => {
341352
signal: new AbortController().signal,
342353
dispatch: storeRef.store.dispatch,
343354
getState: storeRef.store.getState,
355+
extra: undefined,
344356
},
345357
{}
346358
))
@@ -359,6 +371,7 @@ describe('fetchBaseQuery', () => {
359371
signal: new AbortController().signal,
360372
dispatch: storeRef.store.dispatch,
361373
getState: storeRef.store.getState,
374+
extra: undefined,
362375
},
363376
{}
364377
))
@@ -376,6 +389,7 @@ describe('fetchBaseQuery', () => {
376389
signal: new AbortController().signal,
377390
dispatch: storeRef.store.dispatch,
378391
getState: storeRef.store.getState,
392+
extra: undefined,
379393
},
380394
{}
381395
))
@@ -393,6 +407,7 @@ describe('fetchBaseQuery', () => {
393407
signal: new AbortController().signal,
394408
dispatch: storeRef.store.dispatch,
395409
getState: storeRef.store.getState,
410+
extra: undefined,
396411
},
397412
{}
398413
))
@@ -410,6 +425,7 @@ describe('fetchBaseQuery', () => {
410425
signal: new AbortController().signal,
411426
dispatch: storeRef.store.dispatch,
412427
getState: storeRef.store.getState,
428+
extra: undefined,
413429
},
414430
{}
415431
))
@@ -427,6 +443,7 @@ describe('fetchBaseQuery', () => {
427443
signal: new AbortController().signal,
428444
dispatch: storeRef.store.dispatch,
429445
getState: storeRef.store.getState,
446+
extra: undefined,
430447
},
431448
{}
432449
))
@@ -448,6 +465,7 @@ describe('fetchBaseQuery', () => {
448465
signal: new AbortController().signal,
449466
dispatch: storeRef.store.dispatch,
450467
getState: storeRef.store.getState,
468+
extra: undefined,
451469
},
452470
{}
453471
)
@@ -471,6 +489,7 @@ describe('fetchBaseQuery', () => {
471489
signal: new AbortController().signal,
472490
dispatch: storeRef.store.dispatch,
473491
getState: storeRef.store.getState,
492+
extra: undefined,
474493
},
475494
{}
476495
))
@@ -488,6 +507,7 @@ describe('fetchBaseQuery', () => {
488507
signal: new AbortController().signal,
489508
dispatch: storeRef.store.dispatch,
490509
getState: storeRef.store.getState,
510+
extra: undefined,
491511
},
492512
{}
493513
))
@@ -512,6 +532,7 @@ describe('fetchBaseQuery', () => {
512532
signal: new AbortController().signal,
513533
dispatch: storeRef.store.dispatch,
514534
getState: storeRef.store.getState,
535+
extra: undefined,
515536
},
516537
{}
517538
))
@@ -533,6 +554,7 @@ describe('fetchBaseQuery', () => {
533554
signal: new AbortController().signal,
534555
dispatch: storeRef.store.dispatch,
535556
getState: storeRef.store.getState,
557+
extra: undefined,
536558
},
537559
{}
538560
))
@@ -563,6 +585,7 @@ describe('fetchBaseQuery', () => {
563585
signal: new AbortController().signal,
564586
dispatch: storeRef.store.dispatch,
565587
getState: storeRef.store.getState,
588+
extra: undefined,
566589
},
567590
{}
568591
)
@@ -582,6 +605,7 @@ describe('fetchBaseQuery', () => {
582605
signal: new AbortController().signal,
583606
dispatch: storeRef.store.dispatch,
584607
getState: storeRef.store.getState,
608+
extra: undefined,
585609
},
586610
{}
587611
)
@@ -607,6 +631,7 @@ describe('fetchBaseQuery', () => {
607631
signal: new AbortController().signal,
608632
dispatch: storeRef.store.dispatch,
609633
getState: storeRef.store.getState,
634+
extra: undefined,
610635
},
611636
{}
612637
))
@@ -625,6 +650,7 @@ describe('fetchBaseQuery', () => {
625650
signal: new AbortController().signal,
626651
dispatch: storeRef.store.dispatch,
627652
getState: storeRef.store.getState,
653+
extra: undefined,
628654
},
629655
{}
630656
))
@@ -644,6 +670,7 @@ describe('fetchBaseQuery', () => {
644670
signal: new AbortController().signal,
645671
dispatch: storeRef.store.dispatch,
646672
getState: storeRef.store.getState,
673+
extra: undefined,
647674
},
648675
{}
649676
))
@@ -672,6 +699,7 @@ describe('fetchFn', () => {
672699
signal: new AbortController().signal,
673700
dispatch: storeRef.store.dispatch,
674701
getState: storeRef.store.getState,
702+
extra: undefined,
675703
},
676704
{}
677705
))
@@ -699,6 +727,7 @@ describe('fetchFn', () => {
699727
signal: new AbortController().signal,
700728
dispatch: storeRef.store.dispatch,
701729
getState: storeRef.store.getState,
730+
extra: undefined,
702731
},
703732
{}
704733
)
@@ -725,6 +754,7 @@ describe('FormData', () => {
725754
signal: new AbortController().signal,
726755
dispatch: storeRef.store.dispatch,
727756
getState: storeRef.store.getState,
757+
extra: undefined,
728758
},
729759
{}
730760
)
@@ -746,6 +776,7 @@ describe('still throws on completely unexpected errors', () => {
746776
signal: new AbortController().signal,
747777
dispatch: storeRef.store.dispatch,
748778
getState: storeRef.store.getState,
779+
extra: undefined,
749780
},
750781
{}
751782
)

0 commit comments

Comments
 (0)