Skip to content

Commit 5352da8

Browse files
authored
Merge pull request #9138 from Couchers-org/na/web/my-comm-query
Switch upcoming stays and my communities to useInfiniteQuery
2 parents 50f4832 + 2591147 commit 5352da8

4 files changed

Lines changed: 32 additions & 13 deletions

File tree

app/web/features/communities/hooks.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,14 @@ export interface CreateDiscussionInput {
194194
}
195195

196196
export const useListUserCommunities = () =>
197-
useQuery<ListUserCommunitiesRes.AsObject, RpcError>({
197+
useInfiniteQuery<ListUserCommunitiesRes.AsObject, RpcError>({
198198
queryKey: [userCommunitiesListKey],
199-
queryFn: () => service.communities.listUserCommunities(),
199+
queryFn: ({ pageParam }) =>
200+
service.communities.listUserCommunities(pageParam as string | undefined),
201+
initialPageParam: undefined,
202+
getNextPageParam: (lastPage) =>
203+
lastPage.nextPageToken ? lastPage.nextPageToken : undefined,
204+
staleTime: 10 * 60 * 1000,
200205
});
201206

202207
export const useNewDiscussionMutation = (onSuccess?: () => void) => {

app/web/features/dashboard/CommunitiesList.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ export default function CommunitiesList() {
6767

6868
const { data, isPending, error } = useListUserCommunities();
6969

70-
const communities = data?.communitiesList ?? [];
70+
const communities = (data?.pages ?? []).flatMap(
71+
(page) => page.communitiesList,
72+
);
7173

7274
const updateScrollState = () => {
7375
const el = scrollerRef.current;

app/web/features/dashboard/UpcomingStays.tsx

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
MeetingRoom,
66
} from "@mui/icons-material";
77
import { Box, IconButton, styled, Typography } from "@mui/material";
8-
import { useQuery } from "@tanstack/react-query";
8+
import { useInfiniteQuery } from "@tanstack/react-query";
99
import Alert from "components/Alert";
1010
import FadingScrollTrack from "components/FadingScrollTrack";
1111
import { hostRequestsListKey } from "features/queryKeys";
@@ -217,34 +217,46 @@ export default function UpcomingStays() {
217217
data: tripsData,
218218
isLoading: tripsLoading,
219219
error: tripsError,
220-
} = useQuery<ListHostRequestsRes.AsObject, RpcError>({
221-
queryKey: hostRequestsListKey({ type: "surfing" }),
222-
queryFn: () =>
220+
} = useInfiniteQuery<ListHostRequestsRes.AsObject, RpcError>({
221+
queryKey: hostRequestsListKey({ type: "surfing", onlyActive: true }),
222+
queryFn: ({ pageParam }) =>
223223
service.requests.listHostRequests({
224+
pageToken: pageParam as string | undefined,
224225
type: "surfing",
225226
onlyActive: true,
226227
statusIn: UPCOMING_STATUSES,
227228
sortBy: HostRequestSortBy.HOST_REQUEST_SORT_BY_FROM_DATE,
228229
}),
230+
initialPageParam: undefined,
231+
getNextPageParam: (lastPage) =>
232+
lastPage.noMore ? undefined : lastPage.nextPageToken,
229233
});
230234

231235
const {
232236
data: guestsData,
233237
isLoading: guestsLoading,
234238
error: guestsError,
235-
} = useQuery<ListHostRequestsRes.AsObject, RpcError>({
236-
queryKey: hostRequestsListKey({ type: "hosting" }),
237-
queryFn: () =>
239+
} = useInfiniteQuery<ListHostRequestsRes.AsObject, RpcError>({
240+
queryKey: hostRequestsListKey({ type: "hosting", onlyActive: true }),
241+
queryFn: ({ pageParam }) =>
238242
service.requests.listHostRequests({
243+
pageToken: pageParam as string | undefined,
239244
type: "hosting",
240245
onlyActive: true,
241246
statusIn: UPCOMING_STATUSES,
242247
sortBy: HostRequestSortBy.HOST_REQUEST_SORT_BY_FROM_DATE,
243248
}),
249+
initialPageParam: undefined,
250+
getNextPageParam: (lastPage) =>
251+
lastPage.noMore ? undefined : lastPage.nextPageToken,
244252
});
245253

246-
const upcomingTrips = tripsData?.hostRequestsList ?? [];
247-
const upcomingGuests = guestsData?.hostRequestsList ?? [];
254+
const upcomingTrips = (tripsData?.pages ?? []).flatMap(
255+
(page) => page.hostRequestsList,
256+
);
257+
const upcomingGuests = (guestsData?.pages ?? []).flatMap(
258+
(page) => page.hostRequestsList,
259+
);
248260

249261
const error = tripsError ?? guestsError;
250262

app/web/features/queryKeys.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ export const hostRequestMessagesKey = (id?: number) => [
139139

140140
// User
141141
export const userCommunitiesKey = "userCommunities";
142-
export const userCommunitiesListKey = "userCommunitiesList";
142+
export const userCommunitiesListKey = "userCommunitiesListV2";
143143
export const myEventsKey = (type: EventsType) => ["myEvents", { type }];
144144
export const myCommunityEventsKey = (type: EventsType) => [
145145
"myCommunityEvents",

0 commit comments

Comments
 (0)