From 35bd22f5427990dfb0902db6f3a4ec0802f4ab8f Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Mon, 19 Apr 2021 14:02:26 +1000 Subject: [PATCH] Clean --- .../MessageSender+ClosedGroups.swift | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift b/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift index 8192849e4..7b7ee4261 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender+ClosedGroups.swift @@ -204,7 +204,7 @@ extension MessageSender { SNLog("Can't remove members from nonexistent closed group.") return Promise(error: Error.noThread) } - guard !membersToRemove.isEmpty || !storage.getZombieMembers(for: groupPublicKey).isEmpty else { + guard !membersToRemove.isEmpty else { SNLog("Invalid closed group update.") return Promise(error: Error.invalidClosedGroupUpdate) } @@ -219,8 +219,9 @@ extension MessageSender { } let members = Set(group.groupMemberIds).subtracting(membersToRemove) // Update zombie list - let zombies = storage.getZombieMembers(for: groupPublicKey).subtracting(membersToRemove) - storage.setZombieMembers(for: groupPublicKey, to: zombies, using: transaction) + let oldZombies = storage.getZombieMembers(for: groupPublicKey) + let newZombies = oldZombies.subtracting(membersToRemove) + storage.setZombieMembers(for: groupPublicKey, to: newZombies, using: transaction) // Send the update to the group and generate + distribute a new encryption key pair let closedGroupControlMessage = ClosedGroupControlMessage(kind: .membersRemoved(members: membersToRemove.map { Data(hex: $0) })) let promise = MessageSender.sendNonDurably(closedGroupControlMessage, in: thread, using: transaction).map { @@ -229,10 +230,12 @@ extension MessageSender { // Update the group let newGroupModel = TSGroupModel(title: group.groupName, memberIds: [String](members), image: nil, groupId: groupID, groupType: .closedGroup, adminIds: group.groupAdminIds) thread.setGroupModel(newGroupModel, with: transaction) - // Notify the user - let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel) - let infoMessage = TSInfoMessage(timestamp: NSDate.ows_millisecondTimeStamp(), in: thread, messageType: .groupUpdate, customMessage: updateInfo) - infoMessage.save(with: transaction) + // Notify the user if needed (not if only zombie members were removed) + if !membersToRemove.subtracting(oldZombies).isEmpty { + let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel) + let infoMessage = TSInfoMessage(timestamp: NSDate.ows_millisecondTimeStamp(), in: thread, messageType: .groupUpdate, customMessage: updateInfo) + infoMessage.save(with: transaction) + } // Return return promise }