Skip to content

Commit 478284c

Browse files
committed
fix: Fix the critical issue related to useSWRInfinite
1 parent 8616f35 commit 478284c

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

src/visitor.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ export class SWRVisitor extends ClientSideBaseVisitor<
205205
types.push(`export type SWRInfiniteKeyLoader<Data = unknown, Variables = unknown> = (
206206
index: number,
207207
previousPageData: Data | null
208-
) => Partial<Variables> | null;`)
208+
) => [keyof Variables, Variables[keyof Variables] | null] | null;`)
209209
}
210210

211211
return `${types.join('\n')}
@@ -214,11 +214,17 @@ export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionW
214214
${
215215
this._enabledInfinite
216216
? ` const utilsForInfinite = {
217-
generateGetKey: <Data = unknown, Variables = unknown>(id: string, getKey: SWRInfiniteKeyLoader<Data, Variables>) => (pageIndex: number, previousData: Data | null) => {
218-
const key = getKey(pageIndex, previousData)
219-
return key ? [id, key] : null
217+
generateGetKey: <Data = unknown, Variables = unknown>(
218+
id: string,
219+
getKey: SWRInfiniteKeyLoader<Data, Variables>
220+
) => (pageIndex: number, previousData: Data | null) => {
221+
const key = getKey(pageIndex, previousData)
222+
return key ? [id, ...key] : null
220223
},
221-
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (...params: unknown[]) => query(Object.assign({}, variables, ...params.slice(1)))
224+
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (
225+
fieldName: keyof Variables,
226+
fieldValue: Variables[typeof fieldName]
227+
) => query({ ...variables, [fieldName]: fieldValue } as Variables)
222228
}\n`
223229
: ''
224230
}${

tests/swr.spec.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -288,15 +288,21 @@ export type SdkWithHooks = ReturnType<typeof getSdkWithHooks>;`
288288
`export type SWRInfiniteKeyLoader<Data = unknown, Variables = unknown> = (
289289
index: number,
290290
previousPageData: Data | null
291-
) => Partial<Variables> | null;
291+
) => [keyof Variables, Variables[keyof Variables] | null] | null;
292292
export function getSdkWithHooks(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {
293293
const sdk = getSdk(client, withWrapper);
294294
const utilsForInfinite = {
295-
generateGetKey: <Data = unknown, Variables = unknown>(id: string, getKey: SWRInfiniteKeyLoader<Data, Variables>) => (pageIndex: number, previousData: Data | null) => {
296-
const key = getKey(pageIndex, previousData)
297-
return key ? [id, key] : null
295+
generateGetKey: <Data = unknown, Variables = unknown>(
296+
id: string,
297+
getKey: SWRInfiniteKeyLoader<Data, Variables>
298+
) => (pageIndex: number, previousData: Data | null) => {
299+
const key = getKey(pageIndex, previousData)
300+
return key ? [id, ...key] : null
298301
},
299-
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (...params: unknown[]) => query(Object.assign({}, variables, ...params.slice(1)))
302+
generateFetcher: <Query = unknown, Variables = unknown>(query: (variables: Variables) => Promise<Query>, variables?: Variables) => (
303+
fieldName: keyof Variables,
304+
fieldValue: Variables[typeof fieldName]
305+
) => query({ ...variables, [fieldName]: fieldValue } as Variables)
300306
}
301307
return {
302308
...sdk,

0 commit comments

Comments
 (0)