From 313f5392ef82db1e2dd81da8ccc9df52c2c4610d Mon Sep 17 00:00:00 2001 From: joeykrim <208641+joeykrim@users.noreply.github.com> Date: Fri, 13 Mar 2026 00:08:02 -0700 Subject: [PATCH] Fix updateGroup --admin and --remove-member silent failures (#1970) Fix type mismatch in retainAll() calls that cause updateGroup --admin and --remove-member to silently do nothing. retainAll() compared Set against Collection, which always evaluates to false (different types), emptying the set. Replace group.getMembers() with group.getMemberRecipientIds() in all three affected locations. Fixes: updateGroup --admin silently failing to promote members Fixes: updateGroup --remove-member silently failing to remove members Co-authored-by: joey --- .../java/org/asamk/signal/manager/helper/GroupHelper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java index 07a9ef3c..c0fcca45 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java @@ -739,7 +739,7 @@ public class GroupHelper { if (banMembers != null) { existingRemoveMembers.addAll(banMembers); } - existingRemoveMembers.retainAll(group.getMembers()); + existingRemoveMembers.retainAll(group.getMemberRecipientIds()); if (members != null) { existingRemoveMembers.removeAll(members); } @@ -765,7 +765,7 @@ public class GroupHelper { if (admins != null) { final var newAdmins = new HashSet<>(admins); - newAdmins.retainAll(group.getMembers()); + newAdmins.retainAll(group.getMemberRecipientIds()); newAdmins.removeAll(group.getAdminMemberRecipientIds()); if (!newAdmins.isEmpty()) { for (var admin : newAdmins) { @@ -878,7 +878,7 @@ public class GroupHelper { ) throws LastGroupAdminException, IOException { final var currentAdmins = groupInfoV2.getAdminMemberRecipientIds(); newAdmins.removeAll(currentAdmins); - newAdmins.retainAll(groupInfoV2.getMembers()); + newAdmins.retainAll(groupInfoV2.getMemberRecipientIds()); if (currentAdmins.contains(account.getSelfRecipientId()) && currentAdmins.size() == 1 && groupInfoV2.getMembers().size() > 1