( queryClient: QueryClient, updater: (chats: TypesGen.Chat[]) => TypesGen.Chat[], )
| 89 | * to the wrong key (the flat list key, not the infinite query key). |
| 90 | */ |
| 91 | export const updateInfiniteChatsCache = ( |
| 92 | queryClient: QueryClient, |
| 93 | updater: (chats: TypesGen.Chat[]) => TypesGen.Chat[], |
| 94 | ) => { |
| 95 | // Update ALL infinite chat queries regardless of their filter opts. |
| 96 | queryClient.setQueriesData<InfiniteChatsCacheData>( |
| 97 | { queryKey: chatsKey, predicate: isChatListQuery }, |
| 98 | (prev) => { |
| 99 | if (!prev?.pages) return prev; |
| 100 | const nextPages = prev.pages.map((page) => updater(page)); |
| 101 | // Only return a new reference if something actually changed. |
| 102 | const changed = nextPages.some((page, i) => page !== prev.pages[i]); |
| 103 | return changed ? { ...prev, pages: nextPages } : prev; |
| 104 | }, |
| 105 | ); |
| 106 | }; |
| 107 | |
| 108 | /** |
| 109 | * Prepends a new chat to the first page of every infinite chats query |
no test coverage detected