diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_00.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_00.binproto index a0ff00d246..ae6049a22f 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_00.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_00.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_01.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_01.binproto index d24c86d2df..7262c9df4f 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_01.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_01.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_02.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_02.binproto index e63ee49832..dc77758be1 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_02.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_02.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_03.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_03.binproto index e243c2d090..feb69841a6 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_03.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_03.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_04.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_04.binproto index 9132e1c198..02b88915ac 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_04.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_04.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_05.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_05.binproto index 29db15b54f..a684165526 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_05.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_05.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_06.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_06.binproto index fe0b3ac6ed..80535c55d3 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_06.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_06.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_07.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_07.binproto index 8f47bd5683..194750b17c 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_07.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_07.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_08.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_08.binproto index f8226114c9..e9681459ca 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_08.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_08.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_09.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_09.binproto index 9cac939452..906ebfb82b 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_09.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_09.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_10.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_10.binproto index 22a3d4bd8c..b6e89deb41 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_10.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_10.binproto differ diff --git a/app/src/androidTest/assets/backupTests/recipient_groups_11.binproto b/app/src/androidTest/assets/backupTests/recipient_groups_11.binproto index 5f09c1c276..ae07346486 100644 Binary files a/app/src/androidTest/assets/backupTests/recipient_groups_11.binproto and b/app/src/androidTest/assets/backupTests/recipient_groups_11.binproto differ diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/GroupTestingUtils.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/GroupTestingUtils.kt index 3b0837d45f..84068bf036 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/testing/GroupTestingUtils.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/testing/GroupTestingUtils.kt @@ -17,11 +17,13 @@ import kotlin.random.Random * Helper methods for creating groups for message processing tests et al. */ object GroupTestingUtils { - fun member(aci: ACI, revision: Int = 0, role: Member.Role = Member.Role.ADMINISTRATOR): DecryptedMember { + fun member(aci: ACI, revision: Int = 0, role: Member.Role = Member.Role.ADMINISTRATOR, labelEmoji: String = "", labelString: String = ""): DecryptedMember { return DecryptedMember.Builder() .aciBytes(aci.toByteString()) .joinedAtRevision(revision) .role(role) + .labelEmoji(labelEmoji) + .labelString(labelString) .build() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/GroupArchiveExporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/GroupArchiveExporter.kt index 9c9fd74cee..4a57cb0f46 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/GroupArchiveExporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/GroupArchiveExporter.kt @@ -123,7 +123,13 @@ private fun Member.Role.toRemote(): Group.Member.Role { } private fun DecryptedMember.toRemote(): Group.Member { - return Group.Member(userId = aciBytes, role = role.toRemote(), joinedAtVersion = joinedAtRevision) + return Group.Member( + userId = aciBytes, + role = role.toRemote(), + joinedAtVersion = joinedAtRevision, + labelEmoji = labelEmoji, + labelString = labelString + ) } private fun DecryptedPendingMember.toRemote(): Group.MemberPendingProfileKey { diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/GroupArchiveImporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/GroupArchiveImporter.kt index c4b5060935..fae6882b2f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/GroupArchiveImporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/GroupArchiveImporter.kt @@ -116,7 +116,13 @@ private fun Group.Member.Role.toLocal(): Member.Role { } private fun Group.Member.toLocal(): DecryptedMember { - return DecryptedMember(aciBytes = userId, role = role.toLocal(), joinedAtRevision = joinedAtVersion) + return DecryptedMember( + aciBytes = userId, + role = role.toLocal(), + joinedAtRevision = joinedAtVersion, + labelEmoji = labelEmoji, + labelString = labelString + ) } private fun Group.MemberPendingAdminApproval.toLocal(): DecryptedRequestingMember { diff --git a/app/src/main/protowire/Backup.proto b/app/src/main/protowire/Backup.proto index 5374d79f1e..5a6914488a 100644 --- a/app/src/main/protowire/Backup.proto +++ b/app/src/main/protowire/Backup.proto @@ -331,6 +331,8 @@ message Group { reserved /*profileKey*/ 3; // This field is ignored in Backups, in favor of Contact frames for members reserved /*presentation*/ 4; // This field is deprecated in the context of static group state uint32 joinedAtVersion = 5; + string labelEmoji = 6; + string labelString = 7; } message MemberPendingProfileKey { diff --git a/app/src/testShared/org/thoughtcrime/securesms/database/model/databaseprotos/DecryptedGroupHelper.kt b/app/src/testShared/org/thoughtcrime/securesms/database/model/databaseprotos/DecryptedGroupHelper.kt index 846e07524d..97f4189e5a 100644 --- a/app/src/testShared/org/thoughtcrime/securesms/database/model/databaseprotos/DecryptedGroupHelper.kt +++ b/app/src/testShared/org/thoughtcrime/securesms/database/model/databaseprotos/DecryptedGroupHelper.kt @@ -42,15 +42,17 @@ fun DecryptedGroupChange.Builder.addMember(aci: ACI) { newMembers += member(aci) } -fun member(serviceId: UUID, role: Member.Role = Member.Role.DEFAULT, joinedAt: Int = 0): DecryptedMember { - return member(ACI.from(serviceId), role, joinedAt) +fun member(serviceId: UUID, role: Member.Role = Member.Role.DEFAULT, joinedAt: Int = 0, labelEmoji: String = "", labelString: String = ""): DecryptedMember { + return member(ACI.from(serviceId), role, joinedAt, labelEmoji, labelString) } -fun member(aci: ACI, role: Member.Role = Member.Role.DEFAULT, joinedAt: Int = 0): DecryptedMember { +fun member(aci: ACI, role: Member.Role = Member.Role.DEFAULT, joinedAt: Int = 0, labelEmoji: String = "", labelString: String = ""): DecryptedMember { return DecryptedMember.Builder() .role(role) .aciBytes(aci.toByteString()) .joinedAtRevision(joinedAt) + .labelEmoji(labelEmoji) + .labelString(labelString) .build() }