From 57bcc062f409682b71f917fbb099eaaa70b2cd7a Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Fri, 14 Mar 2025 12:04:44 -0500 Subject: [PATCH] workaround with duplicate filtering, underlying issue still exists Signed-off-by: rapterjet2004 --- .../java/com/nextcloud/talk/chat/ChatActivity.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index cbbcde937..5c86cfb3f 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -211,7 +211,6 @@ import java.util.Date import java.util.Locale import java.util.concurrent.ExecutionException import javax.inject.Inject -import kotlin.collections.set import kotlin.math.roundToInt @AutoInjector(NextcloudTalkApplication::class) @@ -785,7 +784,7 @@ class ChatActivity : .onEach { triple -> val lookIntoFuture = triple.first val setUnreadMessagesMarker = triple.second - var chatMessageList = triple.third + var chatMessageList = triple.third.filterDuplicates() chatMessageList = handleSystemMessages(chatMessageList) if (chatMessageList.isEmpty()) { @@ -2732,6 +2731,17 @@ class ChatActivity : (message2.lastEditTimestamp == 0L || message1.lastEditTimestamp == 0L) } + private fun List.filterDuplicates(): List { + val newlist = mutableListOf() + val currentList = adapter!!.items.filter { it.item is ChatMessage }.map { it.item as ChatMessage }.reversed() + for (message in this) { + if (!currentList.any { it.id == message.id }) { + newlist.add(message) + } + } + return newlist + } + private fun determinePreviousMessageIds(chatMessageList: List) { var previousMessageId = NO_PREVIOUS_MESSAGE_ID for (i in chatMessageList.indices.reversed()) {