final Set<RecipientId> removeMembers,
final Set<RecipientId> admins,
final Set<RecipientId> removeAdmins,
+ final Set<RecipientId> banMembers,
+ final Set<RecipientId> unbanMembers,
final boolean resetGroupLink,
final GroupLinkState groupLinkState,
final GroupPermission addMemberPermission,
removeMembers,
admins,
removeAdmins,
+ banMembers,
+ unbanMembers,
resetGroupLink,
groupLinkState,
addMemberPermission,
removeMembers,
admins,
removeAdmins,
+ banMembers,
+ unbanMembers,
resetGroupLink,
groupLinkState,
addMemberPermission,
final Set<RecipientId> removeMembers,
final Set<RecipientId> admins,
final Set<RecipientId> removeAdmins,
+ final Set<RecipientId> banMembers,
+ final Set<RecipientId> unbanMembers,
final boolean resetGroupLink,
final GroupLinkState groupLinkState,
final GroupPermission addMemberPermission,
if (removeMembers != null) {
var existingRemoveMembers = new HashSet<>(removeMembers);
+ if (banMembers != null) {
+ existingRemoveMembers.addAll(banMembers);
+ }
existingRemoveMembers.retainAll(group.getMembers());
+ if (members != null) {
+ existingRemoveMembers.removeAll(members);
+ }
existingRemoveMembers.remove(account.getSelfRecipientId());// self can be removed with sendQuitGroupMessage
if (existingRemoveMembers.size() > 0) {
var groupGroupChangePair = groupV2Helper.removeMembers(group, existingRemoveMembers);
}
}
+ if (banMembers != null) {
+ final var newlyBannedMembers = new HashSet<>(banMembers);
+ newlyBannedMembers.removeAll(group.getBannedMembers());
+ if (newlyBannedMembers.size() > 0) {
+ var groupGroupChangePair = groupV2Helper.banMembers(group, newlyBannedMembers);
+ result = sendUpdateGroupV2Message(group, groupGroupChangePair.first(), groupGroupChangePair.second());
+ }
+ }
+
+ if (unbanMembers != null) {
+ var existingUnbanMembers = new HashSet<>(unbanMembers);
+ existingUnbanMembers.retainAll(group.getBannedMembers());
+ if (existingUnbanMembers.size() > 0) {
+ var groupGroupChangePair = groupV2Helper.unbanMembers(group, existingUnbanMembers);
+ result = sendUpdateGroupV2Message(group, groupGroupChangePair.first(), groupGroupChangePair.second());
+ }
+ }
+
if (resetGroupLink) {
var groupGroupChangePair = groupV2Helper.resetGroupLinkPassword(group);
result = sendUpdateGroupV2Message(group, groupGroupChangePair.first(), groupGroupChangePair.second());