mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 19:38:08 +00:00
Another attempt to fix duplicated messages sometimes
This commit is contained in:
parent
48ec21def4
commit
fd7700a819
1 changed files with 21 additions and 23 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue