kopia lustrzana https://github.com/ryukoposting/Signal-Android
rodzic
409e7c41b4
commit
17fb815805
|
@ -20,6 +20,7 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
@ -295,7 +296,20 @@ public final class DecryptedGroupUtil {
|
|||
}
|
||||
|
||||
private static void applyAddMemberAction(DecryptedGroup.Builder builder, List<DecryptedMember> newMembersList) {
|
||||
builder.addAllMembers(newMembersList);
|
||||
if (newMembersList.isEmpty()) return;
|
||||
|
||||
LinkedHashMap<ByteString, DecryptedMember> members = new LinkedHashMap<>();
|
||||
|
||||
for (DecryptedMember member : builder.getMembersList()) {
|
||||
members.put(member.getUuid(), member);
|
||||
}
|
||||
|
||||
for (DecryptedMember member : newMembersList) {
|
||||
members.put(member.getUuid(), member);
|
||||
}
|
||||
|
||||
builder.clearMembers();
|
||||
builder.addAllMembers(members.values());
|
||||
|
||||
removePendingAndRequestingMembersNowInGroup(builder);
|
||||
}
|
||||
|
|
|
@ -82,6 +82,54 @@ public final class DecryptedGroupUtil_apply_Test {
|
|||
newGroup);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void apply_new_member_already_in_the_group() throws NotAbleToApplyGroupV2ChangeException {
|
||||
DecryptedMember member1 = member(UUID.randomUUID());
|
||||
DecryptedMember member2 = member(UUID.randomUUID());
|
||||
|
||||
DecryptedGroup newGroup = DecryptedGroupUtil.apply(DecryptedGroup.newBuilder()
|
||||
.setRevision(10)
|
||||
.addMembers(member1)
|
||||
.addMembers(member2)
|
||||
.build(),
|
||||
DecryptedGroupChange.newBuilder()
|
||||
.setRevision(11)
|
||||
.addNewMembers(member2)
|
||||
.build());
|
||||
|
||||
assertEquals(DecryptedGroup.newBuilder()
|
||||
.setRevision(11)
|
||||
.addMembers(member1)
|
||||
.addMembers(member2)
|
||||
.build(),
|
||||
newGroup);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void apply_new_member_already_in_the_group_by_uuid() throws NotAbleToApplyGroupV2ChangeException {
|
||||
DecryptedMember member1 = member(UUID.randomUUID());
|
||||
UUID member2Uuid = UUID.randomUUID();
|
||||
DecryptedMember member2a = member(member2Uuid, newProfileKey());
|
||||
DecryptedMember member2b = member(member2Uuid, newProfileKey());
|
||||
|
||||
DecryptedGroup newGroup = DecryptedGroupUtil.apply(DecryptedGroup.newBuilder()
|
||||
.setRevision(10)
|
||||
.addMembers(member1)
|
||||
.addMembers(member2a)
|
||||
.build(),
|
||||
DecryptedGroupChange.newBuilder()
|
||||
.setRevision(11)
|
||||
.addNewMembers(member2b)
|
||||
.build());
|
||||
|
||||
assertEquals(DecryptedGroup.newBuilder()
|
||||
.setRevision(11)
|
||||
.addMembers(member1)
|
||||
.addMembers(member2b)
|
||||
.build(),
|
||||
newGroup);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void apply_remove_member() throws NotAbleToApplyGroupV2ChangeException {
|
||||
DecryptedMember member1 = member(UUID.randomUUID());
|
||||
|
|
Ładowanie…
Reference in New Issue