Another attempt to fix duplicated messages sometimes

This commit is contained in:
Sylvain Berfini 2024-04-18 18:12:34 +02:00
parent 48ec21def4
commit fd7700a819

View file

@ -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<EventLog>()
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<EventLog>()
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<EventLog>()
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()