diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index a9af21461..6c6b9b46b 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -174,28 +174,7 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo Log.i("$TAG Received [${eventLogs.size}] new message(s)") computeComposingLabel() - // Prevents duplicates if user entered conversation while SDK was still doing messages aggregation - val eventsToAdd = arrayListOf() - for (event in eventLogs) { - val found = eventsList.find { - it.model is MessageModel && it.model.chatMessage.messageId == event.chatMessage?.messageId - } - if (found == null) { - eventsToAdd.add(event) - } else { - Log.w( - "$TAG Received message with ID [${event.chatMessage?.messageId}] is already displayed, do not add it again" - ) - } - } - - if (eventsToAdd.size == eventLogs.size) { - addEvents(eventLogs) - } else { - val eventsArray = arrayOf() - eventsToAdd.toArray(eventsArray) - addEvents(eventsArray) - } + addEvents(eventLogs) unreadMessagesCount.postValue(chatRoom.unreadMessagesCount) } @@ -597,8 +576,27 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo list.addAll(eventsList) val lastEvent = list.lastOrNull() + // Prevents message duplicates + val eventsToAdd = arrayListOf() + for (event in eventLogs) { + if (event.chatMessage != null) { + val found = list.find { + it.model is MessageModel && it.model.chatMessage.messageId == event.chatMessage?.messageId + } + if (found == null) { + eventsToAdd.add(event) + } else { + Log.w( + "$TAG Received message with ID [${event.chatMessage?.messageId}] is already displayed, do not add it again" + ) + } + } else { + eventsToAdd.add(event) + } + } + val newList = getEventsListFromHistory( - eventLogs, + eventsToAdd.toTypedArray(), searchFilter.value.orEmpty().trim() ) val newEvent = newList.firstOrNull()