From 5eaef76b02b3cf87f8324d87a6a762bea07c06ac Mon Sep 17 00:00:00 2001 From: Brice-W Date: Tue, 25 May 2021 15:45:43 +1000 Subject: [PATCH] don't update zombie members if current user is removed --- .../sending_receiving/ReceivedMessageHandler.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt index ff5dd6002c..73dab9759a 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt @@ -451,6 +451,7 @@ private fun MessageReceiver.handleClosedGroupMembersRemoved(message: ClosedGroup val members = group.members.map { it.serialize() } val admins = group.admins.map { it.toString() } val removedMembers = kind.members.map { it.toByteArray().toHexString() } + val zombies = storage.getZombieMember(groupID) // Check that the admin wasn't removed if (removedMembers.contains(admins.first())) { Log.d("Loki", "Ignoring invalid closed group update.") @@ -476,12 +477,12 @@ private fun MessageReceiver.handleClosedGroupMembersRemoved(message: ClosedGroup disableLocalGroupAndUnsubscribe(groupPublicKey, groupID, userPublicKey) } else { storage.updateMembers(groupID, newMembers.map { Address.fromSerialized(it) }) + // Update zombie members + storage.updateZombieMembers(groupID, zombies.minus(removedMembers).map { Address.fromSerialized(it) }) } - // Update zombie members - val zombies = storage.getZombieMember(groupID) - storage.updateZombieMembers(groupID, zombies.minus(removedMembers).map { Address.fromSerialized(it) }) - val type = if (senderLeft) SignalServiceGroup.Type.QUIT else SignalServiceGroup.Type.MEMBER_REMOVED + // Notify the user + val type = if (senderLeft) SignalServiceGroup.Type.QUIT else SignalServiceGroup.Type.MEMBER_REMOVED // We don't display zombie members in the notification as users have already been notified when those members left val notificationMembers = removedMembers.minus(zombies) if (notificationMembers.isNotEmpty()) {