mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-07 23:08:33 +00:00
Remove requesting members if they are directly added to the group.
This commit is contained in:
parent
f5f1589813
commit
a478605da4
@ -307,7 +307,7 @@ public final class DecryptedGroupUtil {
|
|||||||
private static void applyAddMemberAction(DecryptedGroup.Builder builder, List<DecryptedMember> newMembersList) {
|
private static void applyAddMemberAction(DecryptedGroup.Builder builder, List<DecryptedMember> newMembersList) {
|
||||||
builder.addAllMembers(newMembersList);
|
builder.addAllMembers(newMembersList);
|
||||||
|
|
||||||
removePendingMembersNowInGroup(builder);
|
removePendingAndRequestingMembersNowInGroup(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void applyDeleteMemberActions(DecryptedGroup.Builder builder, List<ByteString> deleteMembersList) {
|
protected static void applyDeleteMemberActions(DecryptedGroup.Builder builder, List<ByteString> deleteMembersList) {
|
||||||
@ -509,7 +509,7 @@ public final class DecryptedGroupUtil {
|
|||||||
return pendingMemberCipherTexts;
|
return pendingMemberCipherTexts;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void removePendingMembersNowInGroup(DecryptedGroup.Builder builder) {
|
private static void removePendingAndRequestingMembersNowInGroup(DecryptedGroup.Builder builder) {
|
||||||
Set<ByteString> allMembers = membersToUuidByteStringSet(builder.getMembersList());
|
Set<ByteString> allMembers = membersToUuidByteStringSet(builder.getMembersList());
|
||||||
|
|
||||||
for (int i = builder.getPendingMembersCount() - 1; i >= 0; i--) {
|
for (int i = builder.getPendingMembersCount() - 1; i >= 0; i--) {
|
||||||
@ -518,6 +518,13 @@ public final class DecryptedGroupUtil {
|
|||||||
builder.removePendingMembers(i);
|
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 {
|
private static void ensureKnownRole(Member.Role role) throws NotAbleToApplyGroupV2ChangeException {
|
||||||
|
@ -473,6 +473,43 @@ public final class DecryptedGroupUtil_apply_Test {
|
|||||||
newGroup);
|
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
|
@Test
|
||||||
public void title() throws NotAbleToApplyGroupV2ChangeException {
|
public void title() throws NotAbleToApplyGroupV2ChangeException {
|
||||||
DecryptedGroup newGroup = DecryptedGroupUtil.apply(DecryptedGroup.newBuilder()
|
DecryptedGroup newGroup = DecryptedGroupUtil.apply(DecryptedGroup.newBuilder()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user