From 1d8819303293dd87925b638a16f416a14d2273a3 Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Mon, 24 Jul 2023 13:57:14 +0200 Subject: [PATCH 1/2] check if messages groups contain different ids when performing soft update Signed-off-by: Maksim Sukharev --- src/components/MessagesList/MessagesList.vue | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/MessagesList/MessagesList.vue b/src/components/MessagesList/MessagesList.vue index d0b5ce7e6f6..071cc4ac557 100644 --- a/src/components/MessagesList/MessagesList.vue +++ b/src/components/MessagesList/MessagesList.vue @@ -339,15 +339,27 @@ export default { // Check if we have this group in the old list already and it is unchanged return newGroups.map(newGroup => oldGroupsMap.has(newGroup.id) - && newGroup.messages.length === oldGroupsMap.get(newGroup.id).messages.length - && newGroup.dateSeparator === oldGroupsMap.get(newGroup.id).dateSeparator - && newGroup.previousMessageId === oldGroupsMap.get(newGroup.id).previousMessageId - && newGroup.nextMessageId === oldGroupsMap.get(newGroup.id).nextMessageId + && this.areGroupsIdentical(newGroup, oldGroupsMap.get(newGroup.id)) ? oldGroupsMap.get(newGroup.id) : newGroup ).sort((a, b) => a.id - b.id) }, + areGroupsIdentical(group1, group2) { + if (group1.messages.length !== group2.messages.length + || group1.dateSeparator !== group2.dateSeparator + || group1.previousMessageId !== group2.previousMessageId + || group1.nextMessageId !== group2.nextMessageId) { + return false + } + + // Check for temporary messages, replaced with messages from server + const array1 = group1.messages.map(message => message.id) + const array2 = group2.messages.map(message => message.id) + + return array1.every(item => array2.includes(item)) + }, + removeExpiredMessagesFromStore() { this.$store.dispatch('removeExpiredMessages', { token: this.token, From 74f9df1295374e5f4e764319d19d7971001a908a Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Mon, 24 Jul 2023 20:27:53 +0200 Subject: [PATCH 2/2] simplify id comparing for messages groups Signed-off-by: Maksim Sukharev --- src/components/MessagesList/MessagesList.vue | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/MessagesList/MessagesList.vue b/src/components/MessagesList/MessagesList.vue index 071cc4ac557..bd4721de6fd 100644 --- a/src/components/MessagesList/MessagesList.vue +++ b/src/components/MessagesList/MessagesList.vue @@ -354,10 +354,7 @@ export default { } // Check for temporary messages, replaced with messages from server - const array1 = group1.messages.map(message => message.id) - const array2 = group2.messages.map(message => message.id) - - return array1.every(item => array2.includes(item)) + return group1.messages.every((message, index) => group2.messages[index].id === message.id) }, removeExpiredMessagesFromStore() {