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(