From d262b48f3186dff0089208f1a03b47f90112264f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 11 Aug 2023 20:04:37 -0400 Subject: [PATCH] BugFix: Chat List updating immediately when new messages arrive. --- .../ui/dal/ChatroomListKnownFeedFilter.kt | 26 +++++++++++++------ .../ui/dal/ChatroomListNewFeedFilter.kt | 13 +++++++--- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt index 12359ec92..0a74ac6c6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListKnownFeedFilter.kt @@ -68,25 +68,35 @@ class ChatroomListKnownFeedFilter(val account: Account) : AdditiveFeedFilter + var hasUpdated = false oldList.forEach { oldNote -> - if ( - (newNotePair.key == oldNote.channelHex()) && (newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0) - ) { - myNewList = myNewList.updated(oldNote, newNotePair.value) + if (newNotePair.key == oldNote.channelHex()) { + hasUpdated = true + if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { + myNewList = myNewList.updated(oldNote, newNotePair.value) + } } } + if (!hasUpdated) { + myNewList = myNewList.plus(newNotePair.value) + } } newRelevantPrivateMessages.forEach { newNotePair -> + var hasUpdated = false oldList.forEach { oldNote -> val oldRoom = (oldNote.event as? ChatroomKeyable)?.chatroomKey(me.pubkeyHex) - if ( - (newNotePair.key == oldRoom) && (newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0) - ) { - myNewList = myNewList.updated(oldNote, newNotePair.value) + if (newNotePair.key == oldRoom) { + hasUpdated = true + if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { + myNewList = myNewList.updated(oldNote, newNotePair.value) + } } } + if (!hasUpdated) { + myNewList = myNewList.plus(newNotePair.value) + } } sort(myNewList.toSet()).take(1000) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt index 90fdac2cf..41eff82e0 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/dal/ChatroomListNewFeedFilter.kt @@ -53,15 +53,20 @@ class ChatroomListNewFeedFilter(val account: Account) : AdditiveFeedFilter var myNewList = oldList newRelevantPrivateMessages.forEach { newNotePair -> + var hasUpdated = false oldList.forEach { oldNote -> val oldRoom = (oldNote.event as? ChatroomKeyable)?.chatroomKey(me.pubkeyHex) - if ( - (newNotePair.key == oldRoom) && (newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0) - ) { - myNewList = myNewList.updated(oldNote, newNotePair.value) + if (newNotePair.key == oldRoom) { + hasUpdated = true + if ((newNotePair.value.createdAt() ?: 0) > (oldNote.createdAt() ?: 0)) { + myNewList = myNewList.updated(oldNote, newNotePair.value) + } } } + if (!hasUpdated) { + myNewList = myNewList.plus(newNotePair.value) + } } sort(myNewList.toSet()).take(1000)