From 81f286f9ebb9dc936452d13b31a152f8300a45f6 Mon Sep 17 00:00:00 2001 From: Stef Coenen Date: Wed, 2 Oct 2024 10:26:02 +0200 Subject: [PATCH] Recover from a bad message cache state; --- .../src/hooks/chat/useChatMessages.ts | 25 +++++++++++-------- .../src/hooks/chat/useLiveChatProcessor.ts | 1 - .../src/templates/Chat/ChatDetail.tsx | 2 +- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/chat-app/src/hooks/chat/useChatMessages.ts b/packages/chat-app/src/hooks/chat/useChatMessages.ts index 12e18a8a..b72c7961 100644 --- a/packages/chat-app/src/hooks/chat/useChatMessages.ts +++ b/packages/chat-app/src/hooks/chat/useChatMessages.ts @@ -131,17 +131,20 @@ export const insertNewMessagesForConversation = ( }> >(['chat-messages', conversationId]); - if (newMessages.length > PAGE_SIZE || !extistingMessages) { - queryClient.setQueryData( - ['chat-messages', conversationId], - (data: InfiniteData) => { - return { - pages: data?.pages?.slice(0, 1) ?? [], - pageParams: data?.pageParams?.slice(0, 1) || [undefined], - }; - } - ); - queryClient.invalidateQueries({ queryKey: ['chat-messages', conversationId] }); + if (newMessages.length > PAGE_SIZE || !extistingMessages || !extistingMessages.pages.length) { + if (extistingMessages) { + // Only reset the first page if we have data; + queryClient.setQueryData( + ['chat-messages', conversationId], + (data: InfiniteData) => { + return { + pages: data?.pages?.slice(0, 1) ?? [], + pageParams: data?.pageParams?.slice(0, 1) || [undefined], + }; + } + ); + } + queryClient.refetchQueries({ queryKey: ['chat-messages', conversationId] }); return; } diff --git a/packages/chat-app/src/hooks/chat/useLiveChatProcessor.ts b/packages/chat-app/src/hooks/chat/useLiveChatProcessor.ts index c525e007..2b584308 100644 --- a/packages/chat-app/src/hooks/chat/useLiveChatProcessor.ts +++ b/packages/chat-app/src/hooks/chat/useLiveChatProcessor.ts @@ -80,7 +80,6 @@ const useInboxProcessor = (connected?: boolean) => { ); isDebug && console.debug('[InboxProcessor] new messages', updatedMessages.length); await processChatMessagesBatch(dotYouClient, queryClient, updatedMessages); - const updatedConversations = await findChangesSinceTimestamp( dotYouClient, lastProcessedWithBuffer, diff --git a/packages/chat-app/src/templates/Chat/ChatDetail.tsx b/packages/chat-app/src/templates/Chat/ChatDetail.tsx index daee7a66..0dfa0f45 100644 --- a/packages/chat-app/src/templates/Chat/ChatDetail.tsx +++ b/packages/chat-app/src/templates/Chat/ChatDetail.tsx @@ -59,7 +59,7 @@ export const ChatDetail = ({ if ( !conversation || stringGuidsEqual(conversationId, ConversationWithYourselfId) || - conversation?.fileMetadata.senderOdinId + conversation?.fileMetadata.senderOdinId !== identity ) { return; }