mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-04-24 21:18:31 +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)")
|
Log.i("$TAG Received [${eventLogs.size}] new message(s)")
|
||||||
computeComposingLabel()
|
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)
|
addEvents(eventLogs)
|
||||||
} else {
|
|
||||||
val eventsArray = arrayOf<EventLog>()
|
|
||||||
eventsToAdd.toArray(eventsArray)
|
|
||||||
addEvents(eventsArray)
|
|
||||||
}
|
|
||||||
|
|
||||||
unreadMessagesCount.postValue(chatRoom.unreadMessagesCount)
|
unreadMessagesCount.postValue(chatRoom.unreadMessagesCount)
|
||||||
}
|
}
|
||||||
|
|
@ -597,8 +576,27 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo
|
||||||
list.addAll(eventsList)
|
list.addAll(eventsList)
|
||||||
val lastEvent = list.lastOrNull()
|
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(
|
val newList = getEventsListFromHistory(
|
||||||
eventLogs,
|
eventsToAdd.toTypedArray(),
|
||||||
searchFilter.value.orEmpty().trim()
|
searchFilter.value.orEmpty().trim()
|
||||||
)
|
)
|
||||||
val newEvent = newList.firstOrNull()
|
val newEvent = newList.firstOrNull()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue