Skip to content

Commit

Permalink
Remove requesting members if they are directly added to the group.
Browse files Browse the repository at this point in the history
  • Loading branch information
alan-signal committed Aug 28, 2020
1 parent f5f1589 commit a478605
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ public static DecryptedGroup applyWithoutRevisionCheck(DecryptedGroup group, Dec
private static void applyAddMemberAction(DecryptedGroup.Builder builder, List<DecryptedMember> newMembersList) {
builder.addAllMembers(newMembersList);

removePendingMembersNowInGroup(builder);
removePendingAndRequestingMembersNowInGroup(builder);
}

protected static void applyDeleteMemberActions(DecryptedGroup.Builder builder, List<ByteString> deleteMembersList) {
Expand Down Expand Up @@ -509,7 +509,7 @@ private static Set<ByteString> getPendingMemberCipherTextSet(List<DecryptedPendi
return pendingMemberCipherTexts;
}

private static void removePendingMembersNowInGroup(DecryptedGroup.Builder builder) {
private static void removePendingAndRequestingMembersNowInGroup(DecryptedGroup.Builder builder) {
Set<ByteString> allMembers = membersToUuidByteStringSet(builder.getMembersList());

for (int i = builder.getPendingMembersCount() - 1; i >= 0; i--) {
Expand All @@ -518,6 +518,13 @@ private static void removePendingMembersNowInGroup(DecryptedGroup.Builder builde
builder.removePendingMembers(i);
}
}

for (int i = builder.getRequestingMembersCount() - 1; i >= 0; i--) {
DecryptedRequestingMember requestingMember = builder.getRequestingMembers(i);
if (allMembers.contains(requestingMember.getUuid())) {
builder.removeRequestingMembers(i);
}
}
}

private static void ensureKnownRole(Member.Role role) throws NotAbleToApplyGroupV2ChangeException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,43 @@ public void skip_promote_pending_member_by_direct_add() throws NotAbleToApplyGro
newGroup);
}

@Test
public void skip_promote_requesting_member_by_direct_add() throws NotAbleToApplyGroupV2ChangeException {
ProfileKey profileKey2 = randomProfileKey();
ProfileKey profileKey3 = randomProfileKey();
DecryptedMember member1 = member(UUID.randomUUID());
UUID requesting2Uuid = UUID.randomUUID();
UUID requesting3Uuid = UUID.randomUUID();
UUID requesting4Uuid = UUID.randomUUID();
DecryptedRequestingMember requesting2 = requestingMember(requesting2Uuid);
DecryptedRequestingMember requesting3 = requestingMember(requesting3Uuid);
DecryptedRequestingMember requesting4 = requestingMember(requesting4Uuid);
DecryptedMember member2 = member(requesting2Uuid, profileKey2);
DecryptedMember member3 = member(requesting3Uuid, profileKey3);

DecryptedGroup newGroup = DecryptedGroupUtil.apply(DecryptedGroup.newBuilder()
.setRevision(10)
.addMembers(member1)
.addRequestingMembers(requesting2)
.addRequestingMembers(requesting3)
.addRequestingMembers(requesting4)
.build(),
DecryptedGroupChange.newBuilder()
.setRevision(11)
.addNewMembers(member2)
.addNewMembers(member3)
.build());

assertEquals(DecryptedGroup.newBuilder()
.setRevision(11)
.addMembers(member1)
.addMembers(member2)
.addMembers(member3)
.addRequestingMembers(requesting4)
.build(),
newGroup);
}

@Test
public void title() throws NotAbleToApplyGroupV2ChangeException {
DecryptedGroup newGroup = DecryptedGroupUtil.apply(DecryptedGroup.newBuilder()
Expand Down

0 comments on commit a478605

Please sign in to comment.