From 4a069fa73b36046deed6893f890b5b4553bbd145 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 12 Mar 2024 16:21:18 -0400 Subject: [PATCH] Simplifies if a chatroom sender intersects with the follow list. --- .../com/vitorpamplona/amethyst/model/Chatroom.kt | 13 ++++++++++--- .../java/com/vitorpamplona/amethyst/model/User.kt | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Chatroom.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Chatroom.kt index 7a22e1e24..f986f1fe1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Chatroom.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Chatroom.kt @@ -27,6 +27,7 @@ import com.vitorpamplona.quartz.utils.TimeUtils @Stable class Chatroom() { + var authors: Set = setOf() var roomMessages: Set = setOf() var subject: String? = null var subjectCreatedAt: Long? = null @@ -38,6 +39,12 @@ class Chatroom() { if (msg !in roomMessages) { roomMessages = roomMessages + msg + msg.author?.let { author -> + if (author !in authors) { + authors += author + } + } + val newSubject = msg.event?.subject() if (newSubject != null && (msg.createdAt() ?: 0) > (subjectCreatedAt ?: 0)) { @@ -51,8 +58,8 @@ class Chatroom() { fun removeMessageSync(msg: Note) { checkNotInMainThread() - if (msg !in roomMessages) { - roomMessages = roomMessages + msg + if (msg in roomMessages) { + roomMessages = roomMessages - msg roomMessages .filter { it.event?.subject() != null } @@ -66,7 +73,7 @@ class Chatroom() { } fun senderIntersects(keySet: Set): Boolean { - return roomMessages.any { it.author?.pubkeyHex in keySet } + return authors.any { it.pubkeyHex in keySet } } fun pruneMessagesToTheLatestOnly(): Set { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt index 52ccbacd5..a2985bc28 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/User.kt @@ -394,7 +394,7 @@ class User(val pubkeyHex: String) { fun hasSentMessagesTo(key: ChatroomKey?): Boolean { val messagesToUser = privateChatrooms[key] ?: return false - return messagesToUser.roomMessages.any { this.pubkeyHex == it.author?.pubkeyHex } + return messagesToUser.authors.any { this == it } } fun hasReport(