fix(frontend): Optimistically cache individual conversations from paginated results (#11510)

This commit is contained in:
sp.wack 2025-10-27 16:24:46 +04:00 committed by GitHub
parent 694ac74bb9
commit 3ec8d70d04
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,14 +1,29 @@
import { useInfiniteQuery } from "@tanstack/react-query";
import { useInfiniteQuery, useQueryClient } from "@tanstack/react-query";
import ConversationService from "#/api/conversation-service/conversation-service.api";
import { useIsAuthed } from "./use-is-authed";
export const usePaginatedConversations = (limit: number = 20) => {
const { data: userIsAuthenticated } = useIsAuthed();
const queryClient = useQueryClient();
return useInfiniteQuery({
queryKey: ["user", "conversations", "paginated", limit],
queryFn: ({ pageParam }) =>
ConversationService.getUserConversations(limit, pageParam),
queryFn: async ({ pageParam }) => {
const result = await ConversationService.getUserConversations(
limit,
pageParam,
);
// Optimistically populate individual conversation caches
result.results.forEach((conversation) => {
queryClient.setQueryData(
["user", "conversation", conversation.conversation_id],
conversation,
);
});
return result;
},
enabled: !!userIsAuthenticated,
getNextPageParam: (lastPage) => lastPage.next_page_id,
initialPageParam: undefined as string | undefined,