@@ -3,7 +3,7 @@ import format from 'date-fns/format';
3
3
import * as actionTypes from './actionTypes' ;
4
4
import compareIds from '../../../../utils/compareIds' ;
5
5
import { PREV_RESULT_SIZE , NEXT_RESULT_SIZE } from '../const' ;
6
- import { passUnsuccessfullMessages } from '../utils' ;
6
+ import { passUnsuccessfullMessages , mergeAndSortMessages } from '../utils' ;
7
7
import { filterMessageListParams , getSendingMessageStatus } from '../../../../utils' ;
8
8
9
9
const {
@@ -111,32 +111,14 @@ export default function reducer(state, action) {
111
111
const hasMoreNext = messages && messages . length === NEXT_RESULT_SIZE + 1 ;
112
112
const latestMessageTimeStamp = getLatestMessageTimeStamp ( messages ) ;
113
113
114
- // Remove duplicated messages
115
- const duplicatedMessageIds = [ ] ;
116
- const updatedOldMessages = state . allMessages . map ( ( msg ) => {
117
- const duplicatedMessage = messages . find ( ( { messageId } ) => (
118
- compareIds ( messageId , msg . messageId )
119
- ) ) ;
120
- if ( ! duplicatedMessage ) {
121
- return msg ;
122
- }
123
- duplicatedMessageIds . push ( duplicatedMessage . messageId ) ;
124
- return ( duplicatedMessage . updatedAt > msg . updatedAt ) ? duplicatedMessage : msg ;
125
- } ) ;
126
- const filteredNewMessages = ( duplicatedMessageIds . length > 0 )
127
- ? messages . filter ( ( msg ) => (
128
- ! duplicatedMessageIds . find ( ( messageId ) => compareIds ( messageId , msg . messageId ) )
129
- ) )
130
- : messages ;
114
+ // sort ~
115
+ const sortedMessages = mergeAndSortMessages ( state . allMessages , messages ) ;
131
116
132
117
return {
133
118
...state ,
134
119
hasMoreNext,
135
120
latestMessageTimeStamp,
136
- allMessages : [
137
- ...updatedOldMessages ,
138
- ...filteredNewMessages ,
139
- ] ,
121
+ allMessages : sortedMessages ,
140
122
} ;
141
123
}
142
124
case actionTypes . FETCH_INITIAL_MESSAGES_FAILURE :
0 commit comments