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<RecipientId> against Collection<GroupMemberInfo>,
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 <joey@Mac-Studio.local>
This commit is contained in:
joeykrim 2026-03-13 00:08:02 -07:00 committed by GitHub
parent 7d89375d3a
commit 313f5392ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -739,7 +739,7 @@ public class GroupHelper {
if (banMembers != null) { if (banMembers != null) {
existingRemoveMembers.addAll(banMembers); existingRemoveMembers.addAll(banMembers);
} }
existingRemoveMembers.retainAll(group.getMembers()); existingRemoveMembers.retainAll(group.getMemberRecipientIds());
if (members != null) { if (members != null) {
existingRemoveMembers.removeAll(members); existingRemoveMembers.removeAll(members);
} }
@ -765,7 +765,7 @@ public class GroupHelper {
if (admins != null) { if (admins != null) {
final var newAdmins = new HashSet<>(admins); final var newAdmins = new HashSet<>(admins);
newAdmins.retainAll(group.getMembers()); newAdmins.retainAll(group.getMemberRecipientIds());
newAdmins.removeAll(group.getAdminMemberRecipientIds()); newAdmins.removeAll(group.getAdminMemberRecipientIds());
if (!newAdmins.isEmpty()) { if (!newAdmins.isEmpty()) {
for (var admin : newAdmins) { for (var admin : newAdmins) {
@ -878,7 +878,7 @@ public class GroupHelper {
) throws LastGroupAdminException, IOException { ) throws LastGroupAdminException, IOException {
final var currentAdmins = groupInfoV2.getAdminMemberRecipientIds(); final var currentAdmins = groupInfoV2.getAdminMemberRecipientIds();
newAdmins.removeAll(currentAdmins); newAdmins.removeAll(currentAdmins);
newAdmins.retainAll(groupInfoV2.getMembers()); newAdmins.retainAll(groupInfoV2.getMemberRecipientIds());
if (currentAdmins.contains(account.getSelfRecipientId()) if (currentAdmins.contains(account.getSelfRecipientId())
&& currentAdmins.size() == 1 && currentAdmins.size() == 1
&& groupInfoV2.getMembers().size() > 1 && groupInfoV2.getMembers().size() > 1