From 92ed33404501ac0d8cbc798d30fd2a5b37cacd05 Mon Sep 17 00:00:00 2001 From: Dharit Tantiviramanond Date: Wed, 25 Sep 2024 17:31:28 -0400 Subject: [PATCH 1/3] [PAY-3457] Fix chat blast triggering chatlist resort --- packages/common/src/store/pages/chat/slice.ts | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/common/src/store/pages/chat/slice.ts b/packages/common/src/store/pages/chat/slice.ts index 859678e16d8..a4156404e0d 100644 --- a/packages/common/src/store/pages/chat/slice.ts +++ b/packages/common/src/store/pages/chat/slice.ts @@ -485,17 +485,24 @@ const slice = createSlice({ return } - // Update the chat metadata, but don't update recheck_permissions unless - // it's a message received from someone else + // Always update the last message, but don't update + // last_message_at if it's a blast message sent by current user, + // to avoid chat list re-sorting + const existingChat = getChat(state, chatId) + const changes = { + last_message: message.message, + ...(message.is_plaintext && isSelfMessage && !existingChat?.is_blast + ? {} + : { last_message_at: message.created_at }) + } + chatsAdapter.updateOne(state.chats, { id: chatId, - changes: { - last_message: message.message, - last_message_at: message.created_at - } + changes }) - // Return early if we've seen this message + // Return early if we've seen this message: don't update + // recheck_permissions unless it's a message received from someone else const existingMessage = getMessage( state.messages[chatId], message.message_id @@ -520,7 +527,6 @@ const slice = createSlice({ recalculatePreviousMessageHasTail(state.messages[chatId], 0) // Handle unread counts - const existingChat = getChat(state, chatId) if (!existingChat || existingChat.is_blast) return const optimisticRead = state.optimisticChatRead[chatId] const existingUnreadCount = optimisticRead From 62bbc2bc2529c62a86915b533cb69b2b94b39d51 Mon Sep 17 00:00:00 2001 From: Dharit Tantiviramanond Date: Wed, 25 Sep 2024 17:33:58 -0400 Subject: [PATCH 2/3] comment --- packages/common/src/store/pages/chat/slice.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/common/src/store/pages/chat/slice.ts b/packages/common/src/store/pages/chat/slice.ts index a4156404e0d..afb83b2de9e 100644 --- a/packages/common/src/store/pages/chat/slice.ts +++ b/packages/common/src/store/pages/chat/slice.ts @@ -487,7 +487,8 @@ const slice = createSlice({ // Always update the last message, but don't update // last_message_at if it's a blast message sent by current user, - // to avoid chat list re-sorting + // to avoid chat list re-sorting. + // Note: is_plaintext indicates that the message originated from a blast const existingChat = getChat(state, chatId) const changes = { last_message: message.message, From f56995ec2e070883b9adaa6c638b436f342ef4ac Mon Sep 17 00:00:00 2001 From: Dharit Tantiviramanond Date: Wed, 25 Sep 2024 17:37:23 -0400 Subject: [PATCH 3/3] readable --- packages/common/src/store/pages/chat/slice.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/common/src/store/pages/chat/slice.ts b/packages/common/src/store/pages/chat/slice.ts index afb83b2de9e..e117f5e9359 100644 --- a/packages/common/src/store/pages/chat/slice.ts +++ b/packages/common/src/store/pages/chat/slice.ts @@ -490,12 +490,15 @@ const slice = createSlice({ // to avoid chat list re-sorting. // Note: is_plaintext indicates that the message originated from a blast const existingChat = getChat(state, chatId) - const changes = { - last_message: message.message, - ...(message.is_plaintext && isSelfMessage && !existingChat?.is_blast - ? {} - : { last_message_at: message.created_at }) - } + const changes = + message.is_plaintext && isSelfMessage && !existingChat?.is_blast + ? { + last_message: message.message + } + : { + last_message: message.message, + last_message_at: message.created_at + } chatsAdapter.updateOne(state.chats, { id: chatId,