Fix name-only updates

pull/289/head
nielsandriesse 4 years ago
parent be4ef51416
commit 04a960c78c

@ -112,6 +112,7 @@ public final class ClosedGroupsProtocol : NSObject {
let wasAnyUserRemoved = Set(members).intersection(oldMembers) != oldMembers let wasAnyUserRemoved = Set(members).intersection(oldMembers) != oldMembers
let removedMembers = oldMembers.subtracting(members) let removedMembers = oldMembers.subtracting(members)
let isUserLeaving = removedMembers.contains(userPublicKey) let isUserLeaving = removedMembers.contains(userPublicKey)
var allSenderKeys = Storage.getAllClosedGroupSenderKeys(for: groupPublicKey)
var newSenderKeys: [ClosedGroupSenderKey] = [] var newSenderKeys: [ClosedGroupSenderKey] = []
if wasAnyUserRemoved { if wasAnyUserRemoved {
if isUserLeaving && removedMembers.count != 1 { if isUserLeaving && removedMembers.count != 1 {
@ -150,7 +151,7 @@ public final class ClosedGroupsProtocol : NSObject {
} }
} }
} }
} else { } else if !newMembers.isEmpty {
seal.fulfill(()) seal.fulfill(())
// Generate ratchets for any new members // Generate ratchets for any new members
newSenderKeys = newMembers.map { publicKey in newSenderKeys = newMembers.map { publicKey in
@ -162,11 +163,16 @@ public final class ClosedGroupsProtocol : NSObject {
members: membersAsData, admins: adminsAsData) members: membersAsData, admins: adminsAsData)
let closedGroupUpdateMessage = ClosedGroupUpdateMessage(thread: thread, kind: closedGroupUpdateMessageKind) let closedGroupUpdateMessage = ClosedGroupUpdateMessage(thread: thread, kind: closedGroupUpdateMessageKind)
messageSenderJobQueue.add(message: closedGroupUpdateMessage, transaction: transaction) messageSenderJobQueue.add(message: closedGroupUpdateMessage, transaction: transaction)
} else {
seal.fulfill(())
let closedGroupUpdateMessageKind = ClosedGroupUpdateMessage.Kind.info(groupPublicKey: Data(hex: groupPublicKey), name: name,
senderKeys: [ClosedGroupSenderKey](allSenderKeys), members: membersAsData, admins: adminsAsData)
let closedGroupUpdateMessage = ClosedGroupUpdateMessage(thread: thread, kind: closedGroupUpdateMessageKind)
messageSenderJobQueue.add(message: closedGroupUpdateMessage, transaction: transaction)
} }
// Establish sessions if needed // Establish sessions if needed
establishSessionsIfNeeded(with: [String](newMembers), using: transaction) establishSessionsIfNeeded(with: [String](newMembers), using: transaction)
// Send closed group update messages to the new members using established channels // Send closed group update messages to the new members using established channels
var allSenderKeys = Storage.getAllClosedGroupSenderKeys(for: groupPublicKey)
allSenderKeys.formUnion(newSenderKeys) allSenderKeys.formUnion(newSenderKeys)
for member in newMembers { for member in newMembers {
let thread = TSContactThread.getOrCreateThread(withContactId: member, transaction: transaction) let thread = TSContactThread.getOrCreateThread(withContactId: member, transaction: transaction)

Loading…
Cancel
Save