From 745a7f76ea2e2b8028137295695fa9597b0acdbb Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Fri, 24 Jul 2020 16:27:39 -0300 Subject: [PATCH] Change position of GroupsV2 leave update message. --- .../model/GroupsV2UpdateMessageProducer.java | 8 +++- .../GroupsV2UpdateMessageProducerTest.java | 40 +++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java index 98532eba9..589f68efd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducer.java @@ -82,7 +82,7 @@ final class GroupsV2UpdateMessageProducer { if (change.getEditor().isEmpty() || UuidUtil.UNKNOWN_UUID.equals(UuidUtil.fromByteString(change.getEditor()))) { describeUnknownEditorMemberAdditions(change, updates); - describeUnknownEditorMemberRemovals(change, updates); + describeUnknownEditorModifyMemberRoles(change, updates); describeUnknownEditorInvitations(change, updates); describeUnknownEditorRevokedInvitations(change, updates); @@ -93,13 +93,15 @@ final class GroupsV2UpdateMessageProducer { describeUnknownEditorNewAttributeAccess(change, updates); describeUnknownEditorNewMembershipAccess(change, updates); + describeUnknownEditorMemberRemovals(change, updates); + if (updates.isEmpty()) { describeUnknownEditorUnknownChange(updates); } } else { describeMemberAdditions(change, updates); - describeMemberRemovals(change, updates); + describeModifyMemberRoles(change, updates); describeInvitations(change, updates); describeRevokedInvitations(change, updates); @@ -110,6 +112,8 @@ final class GroupsV2UpdateMessageProducer { describeNewAttributeAccess(change, updates); describeNewMembershipAccess(change, updates); + describeMemberRemovals(change, updates); + if (updates.isEmpty()) { describeUnknownChange(change, updates); } diff --git a/app/src/test/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducerTest.java b/app/src/test/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducerTest.java index 4ca4a57cd..70289a5aa 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducerTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/database/model/GroupsV2UpdateMessageProducerTest.java @@ -767,6 +767,30 @@ public final class GroupsV2UpdateMessageProducerTest { "Alice changed who can edit group membership to \"All members\"."))); } + @Test + public void multiple_changes_leave_and_promote() { + DecryptedGroupChange change = changeBy(alice) + .deleteMember(alice) + .promoteToAdmin(bob) + .build(); + + assertThat(describeChange(change), is(Arrays.asList( + "Alice made Bob an admin.", + "Alice left the group."))); + } + + @Test + public void multiple_changes_leave_and_promote_by_unknown() { + DecryptedGroupChange change = changeByUnknown() + .deleteMember(alice) + .promoteToAdmin(bob) + .build(); + + assertThat(describeChange(change), is(Arrays.asList( + "Bob is now an admin.", + "Alice is no longer in the group."))); + } + @Test public void multiple_changes_by_unknown() { DecryptedGroupChange change = changeByUnknown() @@ -785,6 +809,22 @@ public final class GroupsV2UpdateMessageProducerTest { "Who can edit group membership has been changed to \"All members\"."))); } + @Test + public void multiple_changes_join_and_leave_by_unknown() { + DecryptedGroupChange change = changeByUnknown() + .addMember(alice) + .promoteToAdmin(alice) + .deleteMember(alice) + .title("Updated title") + .build(); + + assertThat(describeChange(change), is(Arrays.asList( + "Alice joined the group.", + "Alice is now an admin.", + "The group name has changed to \"Updated title\".", + "Alice is no longer in the group."))); + } + // Group state without a change record @Test