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.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -295,7 +296,20 @@ 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);
|
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);
|
removePendingAndRequestingMembersNowInGroup(builder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,6 +82,54 @@ public final class DecryptedGroupUtil_apply_Test {
|
||||||
newGroup);
|
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
|
@Test
|
||||||
public void apply_remove_member() throws NotAbleToApplyGroupV2ChangeException {
|
public void apply_remove_member() throws NotAbleToApplyGroupV2ChangeException {
|
||||||
DecryptedMember member1 = member(UUID.randomUUID());
|
DecryptedMember member1 = member(UUID.randomUUID());
|
||||||
|
|
Ładowanie…
Reference in New Issue