@ -406,49 +406,31 @@ export default {
} ,
softUpdateAuthorGroups ( oldGroups , newGroups , dateTimestamp ) {
const newGroupIdSet = new Set ( this . messagesList . map ( message => message . id ) )
const newGroupsKeys = Object . keys ( newGroups )
const groupIds = new Set ( [ ... Object . keys ( oldGroups ) , ... Object . keys ( newGroups ) ] )
Object . entries ( oldGroups ) . forEach ( ( [ id , oldGroup ] ) => {
if ( newGroupsKeys . includes ( id ) ) {
/ / G r o u p i s p r e s e n t e d , w i l l b e h a n d l e d i n t h e n e x t l o o p
return
}
if ( oldGroup . messages . some ( message => ! newGroupIdSet . has ( message . id ) ) ) {
/ / D e l e t e g r o u p s o f n o r m a l a n d t e m p o r a r y m e s s a g e s ,
/ / i f a t l e a s t o n e m e s s a g e f r o m t h e g r o u p i s n o l o n g e r i n t h e s t o r e
groupIds . forEach ( id => {
if ( oldGroups [ id ] && ! newGroups [ id ] ) {
/ / g r o u p n o l o n g e r e x i s t s , r e m o v e
this . $delete ( this . messagesGroupedByDateByAuthor [ dateTimestamp ] , id )
}
} )
Object . entries ( newGroups ) . forEach ( ( [ id , newGroup ] ) => {
if ( ! oldGroups [ id ] ) {
const oldId = Object . keys ( oldGroups )
. find ( key => + id < + key && oldGroups [ key ] . nextMessageId <= newGroup . nextMessageId )
if ( oldId ) {
/ / n e w G r o u p i n c l u d e s o l d G r o u p a n d m o r e o l d m e s s a g e s , r e m o v e o l d G r o u p
this . $delete ( this . messagesGroupedByDateByAuthor [ dateTimestamp ] , oldId )
}
/ / n e w G r o u p i s n o t p r e s e n t e d i n t h e l i s t , a d d i t
this . $set ( this . messagesGroupedByDateByAuthor [ dateTimestamp ] , id , newGroup )
} else if ( ! this . areGroupsIdentical ( newGroup , oldGroups [ id ] ) ) {
/ / n e w G r o u p i n c l u d e s o l d G r o u p a n d m o r e r e c e n t m e s s a g e s
this . $set ( this . messagesGroupedByDateByAuthor [ dateTimestamp ] , id , newGroup )
} else if ( ( newGroups [ id ] && ! oldGroups [ id ] ) || ! this . areGroupsIdentical ( newGroups [ id ] , oldGroups [ id ] ) ) {
/ / g r o u p d i d n o t e x i s t b e f o r e , o r g r o u p d i f f e r s f r o m p r e v i o u s s t a t e , a d d
this . $set ( this . messagesGroupedByDateByAuthor [ dateTimestamp ] , id , newGroups [ id ] )
}
} )
} ,
areGroupsIdentical ( group1 , group2 ) {
/ / C o m p a r e p l a i n v a l u e s
if ( group1 . messages . length !== group2 . messages . length
|| JSON . stringify ( group1 . messages ) !== JSON . stringify ( group2 . messages )
|| group1 . dateSeparator !== group2 . dateSeparator
|| group1 . previousMessageId !== group2 . previousMessageId
|| group1 . nextMessageId !== group2 . nextMessageId ) {
return false
}
/ / C h e c k f o r t e m p o r a r y m e s s a g e s , r e p l a c e d w i t h m e s s a g e s f r o m s e r v e r
return group1 . messages . every ( ( message , index ) => group2 . messages [ index ] . id === message . id )
/ / C o m p a r e i d s a n d s t r i n g i f i e d m e s s a g e s ( l o o k f o r t e m p o r a r y , e d i t e d , d e l e t e d m e s s a g e s , r e p l a c e d f r o m s e r v e r )
return group1 . messages . every ( ( message , index ) => group2 . messages [ index ] . id === message . id
&& JSON . stringify ( group2 . messages [ index ] ) === JSON . stringify ( message ) )
} ,
removeExpiredMessagesFromStore ( ) {