pageParam on infiniteQuery is undefined?
A bit confused what is going on here.
Current scenario is that there is a
export const enumerateProjectsInfiniteQueryOpts = (
variables: EnumerateProjectsRequest | undefined,
init: RequestInit = {},
) => {
const queryKey = [
"projects",
"infinite",
{
queries: variables?.queries,
},
] as const;
return infiniteQueryOptions({
queryKey,
queryFn: variables
? ({ pageParam }: { pageParam: string | undefined }) => {
return enumerateProjects(
{
...variables,
queries: {
...variables.queries,
continuation: variables.queries.continuation || pageParam,
},
},
init,
);
}
: skipToken,
getNextPageParam: (lastPage) => lastPage.continuation || undefined,
initialPageParam: undefined,
});
};
export const useInfiniteProjects = () => {
const qc = useQueryClient();
const query = useInfiniteQuery({
...enumerateProjectsInfiniteQueryOpts({
queries: {
continuation: undefined,
},
}),
select: (data) => {
const lastPage = data.pages[data.pages.length - 1];
return {
projects: data.pages
.flatMap((page) => page.projects ?? [])
.filter((p) => p?.status !== "deleted")
.sort(
(a, b) =>
new Date(b.createdate).getTime() -
new Date(a.createdate).getTime(),
),
continuation: lastPage ? lastPage.continuation : undefined,
};
},
placeholderData: keepPreviousData,
});
useEffect(() => {
if (query.hasNextPage && !query.isFetchingNextPage) {
qc.prefetchInfiniteQuery({
...enumerateProjectsInfiniteQueryOpts({
queries: {
continuation: query.data?.continuation,
},
}),
});
}
}, [query.hasNextPage, query.isFetchingNextPage]);
return query;
};export const enumerateProjectsInfiniteQueryOpts = (
variables: EnumerateProjectsRequest | undefined,
init: RequestInit = {},
) => {
const queryKey = [
"projects",
"infinite",
{
queries: variables?.queries,
},
] as const;
return infiniteQueryOptions({
queryKey,
queryFn: variables
? ({ pageParam }: { pageParam: string | undefined }) => {
return enumerateProjects(
{
...variables,
queries: {
...variables.queries,
continuation: variables.queries.continuation || pageParam,
},
},
init,
);
}
: skipToken,
getNextPageParam: (lastPage) => lastPage.continuation || undefined,
initialPageParam: undefined,
});
};
export const useInfiniteProjects = () => {
const qc = useQueryClient();
const query = useInfiniteQuery({
...enumerateProjectsInfiniteQueryOpts({
queries: {
continuation: undefined,
},
}),
select: (data) => {
const lastPage = data.pages[data.pages.length - 1];
return {
projects: data.pages
.flatMap((page) => page.projects ?? [])
.filter((p) => p?.status !== "deleted")
.sort(
(a, b) =>
new Date(b.createdate).getTime() -
new Date(a.createdate).getTime(),
),
continuation: lastPage ? lastPage.continuation : undefined,
};
},
placeholderData: keepPreviousData,
});
useEffect(() => {
if (query.hasNextPage && !query.isFetchingNextPage) {
qc.prefetchInfiniteQuery({
...enumerateProjectsInfiniteQueryOpts({
queries: {
continuation: query.data?.continuation,
},
}),
});
}
}, [query.hasNextPage, query.isFetchingNextPage]);
return query;
};Current scenario is that there is a
continuationcontinuation token returned from the first request. getNextPageParamgetNextPageParam for enumerateProjectsInfiniteQueryOptsenumerateProjectsInfiniteQueryOpts does contai an object of lastPagelastPage with the next continuationcontinuation token. However... pageParampageParam is always undefined. My variablesvariables object does have it, but wondering why pageParamspageParams is always undefined