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,