Clear non-admin member labels if needed

This commit is contained in:
kate-signal 2026-02-04 19:40:31 -05:00 committed by GitHub
parent b8bcd2644a
commit 7261b34cde
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -485,6 +485,22 @@ public class GroupManager: NSObject {
// MARK: - Change Member Role
private static func acisToClearMemberLabelsFor(groupModel: TSGroupModelV2, access: GroupV2Access) -> [Aci] {
let acisToClearMemberLabelsFor: [Aci] = []
switch access {
case .administrator:
let adminSet = groupModel.groupMembership.fullMemberAdministrators
let memberSet = groupModel.groupMembership.fullMembers
let nonAdminMembers = memberSet.subtracting(adminSet)
return nonAdminMembers.compactMap { $0.aci }
case .unknown, .any, .member, .unsatisfiable:
break
}
return acisToClearMemberLabelsFor
}
public static func changeMemberRoleV2(
groupModel: TSGroupModelV2,
aci: Aci,
@ -492,6 +508,9 @@ public class GroupManager: NSObject {
) async throws {
try await updateGroupV2(groupModel: groupModel, description: "Change member role") { groupChangeSet in
groupChangeSet.changeRoleForMember(aci, role: role)
if role == .normal, groupModel.access.attributes == .administrator {
groupChangeSet.changeLabelForMember(aci, label: nil)
}
}
}
@ -500,6 +519,10 @@ public class GroupManager: NSObject {
public static func changeGroupAttributesAccessV2(groupModel: TSGroupModelV2, access: GroupV2Access) async throws {
try await updateGroupV2(groupModel: groupModel, description: "Change group attributes access") { groupChangeSet in
groupChangeSet.setAccessForAttributes(access)
let acisToClear = acisToClearMemberLabelsFor(groupModel: groupModel, access: access)
for aci in acisToClear {
groupChangeSet.changeLabelForMember(aci, label: nil)
}
}
}