Add test cases for group member label access control.
This commit is contained in:
parent
0cf884fbdf
commit
33b3d0cd43
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@ out/
|
||||
.gradle/
|
||||
build/
|
||||
kls_database.db
|
||||
local.properties
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
|
||||
@ -26,7 +26,7 @@ application {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("org.signal:libsignal-client:0.87.2")
|
||||
implementation("org.signal:libsignal-client:0.88.1")
|
||||
implementation("com.thedeanda:lorem:2.2")
|
||||
implementation(kotlin("reflect"))
|
||||
}
|
||||
|
||||
@ -281,7 +281,8 @@ object StandardFrames {
|
||||
accessControl = Group.AccessControl(
|
||||
attributes = Group.AccessControl.AccessRequired.MEMBER,
|
||||
members = Group.AccessControl.AccessRequired.MEMBER,
|
||||
addFromInviteLink = Group.AccessControl.AccessRequired.UNSATISFIABLE
|
||||
addFromInviteLink = Group.AccessControl.AccessRequired.UNSATISFIABLE,
|
||||
memberLabel = Group.AccessControl.AccessRequired.MEMBER
|
||||
)
|
||||
),
|
||||
avatarColor = AvatarColor.A170
|
||||
@ -336,7 +337,8 @@ object StandardFrames {
|
||||
accessControl = Group.AccessControl(
|
||||
attributes = Group.AccessControl.AccessRequired.MEMBER,
|
||||
members = Group.AccessControl.AccessRequired.MEMBER,
|
||||
addFromInviteLink = Group.AccessControl.AccessRequired.UNSATISFIABLE
|
||||
addFromInviteLink = Group.AccessControl.AccessRequired.UNSATISFIABLE,
|
||||
memberLabel = Group.AccessControl.AccessRequired.MEMBER
|
||||
)
|
||||
),
|
||||
avatarColor = AvatarColor.A170
|
||||
|
||||
@ -14,10 +14,9 @@ import okio.ByteString.Companion.toByteString
|
||||
import oneOf
|
||||
import org.thoughtcrime.securesms.backup.v2.proto.*
|
||||
import pni
|
||||
import toByteString
|
||||
|
||||
/**
|
||||
* Reasonable permutations of [GroupChangeChatMultipleUpdate] objects.
|
||||
* Reasonable permutations of [GroupChangeChatUpdate]s containing multiple batched updates.
|
||||
*/
|
||||
object ChatItemGroupChangeChatMultipleUpdateTestCase : TestCase("chat_item_group_change_chat_multiple_update") {
|
||||
override fun PermutationScope.execute() {
|
||||
@ -33,7 +32,7 @@ object ChatItemGroupChangeChatMultipleUpdateTestCase : TestCase("chat_item_group
|
||||
val groupMembersExcludingSelfGenerator = { Generators.list(StandardFrames.recipientAlice.aci, StandardFrames.recipientBob.aci) }
|
||||
val peopleNotInGroupGenerator = { Generators.list(StandardFrames.recipientCarol.aci, StandardFrames.recipientDan.aci) }
|
||||
|
||||
var updaterAci = StandardFrames.SELF_ACI.toByteString()
|
||||
val updaterAci = StandardFrames.SELF_ACI.toByteString()
|
||||
|
||||
val listOfGenerators = oneOf(
|
||||
// genericGroupUpdateGenerator,
|
||||
@ -201,6 +200,17 @@ object ChatItemGroupChangeChatMultipleUpdateTestCase : TestCase("chat_item_group
|
||||
requestorAci = StandardFrames.SELF_ACI.toByteString(),
|
||||
count = some(Generators.ints(1, 5))
|
||||
)
|
||||
},
|
||||
|
||||
// groupMemberLabelAccessLevelChangeUpdateGenerator
|
||||
Generators.permutation {
|
||||
frames += GroupMemberLabelAccessLevelChangeUpdate(
|
||||
updaterAci,
|
||||
accessLevel = someEnum(
|
||||
GroupV2AccessLevel::class.java,
|
||||
excluding = listOf(GroupV2AccessLevel.UNKNOWN, GroupV2AccessLevel.ANY, GroupV2AccessLevel.UNSATISFIABLE)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@ -244,6 +254,7 @@ object ChatItemGroupChangeChatMultipleUpdateTestCase : TestCase("chat_item_group
|
||||
val groupInviteLinkDisabledUpdateGenerator = listOfGenerators[20]
|
||||
val groupMemberJoinedByLinkUpdateGenerator = listOfGenerators[21]
|
||||
val groupSequenceOfRequestsAndCancelsUpdateGenerator = listOfGenerators[22]
|
||||
val groupMemberLabelAccessLevelChangeUpdateGenerator = listOfGenerators[23]
|
||||
|
||||
val updates = Generators.permutation<GroupChangeChatUpdate.Update> {
|
||||
frames += GroupChangeChatUpdate.Update(
|
||||
@ -269,7 +280,8 @@ object ChatItemGroupChangeChatMultipleUpdateTestCase : TestCase("chat_item_group
|
||||
groupInviteLinkAdminApprovalUpdate = someOneOf(groupInviteLinkAdminApprovalUpdateGenerator),
|
||||
groupInviteLinkDisabledUpdate = someOneOf(groupInviteLinkDisabledUpdateGenerator),
|
||||
groupMemberJoinedByLinkUpdate = someOneOf(groupMemberJoinedByLinkUpdateGenerator),
|
||||
groupSequenceOfRequestsAndCancelsUpdate = someOneOf(groupSequenceOfRequestsAndCancelsUpdateGenerator)
|
||||
groupSequenceOfRequestsAndCancelsUpdate = someOneOf(groupSequenceOfRequestsAndCancelsUpdateGenerator),
|
||||
groupMemberLabelAccessLevelChangeUpdate = someOneOf(groupMemberLabelAccessLevelChangeUpdateGenerator)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -10,8 +10,8 @@ import nullable
|
||||
import okio.ByteString.Companion.toByteString
|
||||
import oneOf
|
||||
import org.thoughtcrime.securesms.backup.v2.proto.*
|
||||
import plus
|
||||
import pni
|
||||
import toByteString
|
||||
import kotlin.time.Duration.Companion.days
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
@ -31,6 +31,7 @@ object ChatItemGroupChangeChatUpdateTestCase : TestCase("chat_item_group_change_
|
||||
frames += StandardFrames.chatGroupAB
|
||||
|
||||
val groupMembersExcludingSelfGenerator = { Generators.list(StandardFrames.recipientAlice.aci, StandardFrames.recipientBob.aci) }
|
||||
val groupMembersIncludingSelfGenerator = { groupMembersExcludingSelfGenerator().plus(StandardFrames.SELF_ACI.toByteString()) }
|
||||
val peopleNotInGroupGenerator = { Generators.list(StandardFrames.recipientCarol.aci, StandardFrames.recipientDan.aci) }
|
||||
|
||||
val listOfGenerators = oneOf(
|
||||
@ -259,6 +260,13 @@ object ChatItemGroupChangeChatUpdateTestCase : TestCase("chat_item_group_change_
|
||||
updaterAci = some(groupMembersExcludingSelfGenerator()),
|
||||
expiresInMs = some(Generators.longs(lower = 5.minutes.inWholeSeconds, upper = 28.days.inWholeSeconds)).seconds.inWholeMilliseconds
|
||||
)
|
||||
},
|
||||
// groupMemberLabelAccessLevelChangeUpdateGenerator
|
||||
Generators.permutation {
|
||||
frames += GroupMemberLabelAccessLevelChangeUpdate(
|
||||
updaterAci = some(groupMembersIncludingSelfGenerator()),
|
||||
accessLevel = someEnum(GroupV2AccessLevel::class.java, excluding = listOf(GroupV2AccessLevel.UNKNOWN, GroupV2AccessLevel.ANY, GroupV2AccessLevel.UNSATISFIABLE))
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@ -296,6 +304,7 @@ object ChatItemGroupChangeChatUpdateTestCase : TestCase("chat_item_group_change_
|
||||
val groupV2MigrationDroppedMembersUpdateGenerator = listOfGenerators[31]
|
||||
val groupSequenceOfRequestsAndCancelsUpdateGenerator = listOfGenerators[32]
|
||||
val groupExpirationTimerUpdateGenerator = listOfGenerators[33]
|
||||
val groupMemberLabelAccessLevelChangeUpdateGenerator = listOfGenerators[34]
|
||||
val updatesGenerator = Generators.permutation<GroupChangeChatUpdate.Update> {
|
||||
frames += GroupChangeChatUpdate.Update(
|
||||
genericGroupUpdate = someOneOf(genericGroupUpdateGenerator),
|
||||
@ -331,7 +340,8 @@ object ChatItemGroupChangeChatUpdateTestCase : TestCase("chat_item_group_change_
|
||||
groupV2MigrationInvitedMembersUpdate = someOneOf(groupV2MigrationInvitedMembersUpdateGenerator),
|
||||
groupV2MigrationDroppedMembersUpdate = someOneOf(groupV2MigrationDroppedMembersUpdateGenerator),
|
||||
groupSequenceOfRequestsAndCancelsUpdate = someOneOf(groupSequenceOfRequestsAndCancelsUpdateGenerator),
|
||||
groupExpirationTimerUpdate = someOneOf(groupExpirationTimerUpdateGenerator)
|
||||
groupExpirationTimerUpdate = someOneOf(groupExpirationTimerUpdateGenerator),
|
||||
groupMemberLabelAccessLevelChangeUpdate = someOneOf(groupMemberLabelAccessLevelChangeUpdateGenerator)
|
||||
)
|
||||
}
|
||||
frames += Frame(
|
||||
|
||||
@ -46,7 +46,8 @@ object RecipientGroupsTestCase : TestCase("recipient_groups") {
|
||||
accessControl = Group.AccessControl(
|
||||
attributes = someEnum(Group.AccessControl.AccessRequired::class.java, Group.AccessControl.AccessRequired.UNKNOWN, Group.AccessControl.AccessRequired.ANY, Group.AccessControl.AccessRequired.UNSATISFIABLE),
|
||||
members = someEnum(Group.AccessControl.AccessRequired::class.java, Group.AccessControl.AccessRequired.UNKNOWN, Group.AccessControl.AccessRequired.ANY, Group.AccessControl.AccessRequired.UNSATISFIABLE),
|
||||
addFromInviteLink = someEnum(Group.AccessControl.AccessRequired::class.java, Group.AccessControl.AccessRequired.UNKNOWN, Group.AccessControl.AccessRequired.ANY, Group.AccessControl.AccessRequired.MEMBER)
|
||||
addFromInviteLink = someEnum(Group.AccessControl.AccessRequired::class.java, Group.AccessControl.AccessRequired.UNKNOWN, Group.AccessControl.AccessRequired.ANY, Group.AccessControl.AccessRequired.MEMBER),
|
||||
memberLabel = someEnum(Group.AccessControl.AccessRequired::class.java, Group.AccessControl.AccessRequired.UNKNOWN, Group.AccessControl.AccessRequired.ANY, Group.AccessControl.AccessRequired.UNSATISFIABLE)
|
||||
),
|
||||
version = somePositiveInt(),
|
||||
members = generateMembers(),
|
||||
|
||||
@ -365,6 +365,7 @@ message Group {
|
||||
AccessRequired attributes = 1;
|
||||
AccessRequired members = 2;
|
||||
AccessRequired addFromInviteLink = 3;
|
||||
AccessRequired memberLabel = 4;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1075,6 +1076,7 @@ message GroupChangeChatUpdate {
|
||||
GroupV2MigrationDroppedMembersUpdate groupV2MigrationDroppedMembersUpdate = 32;
|
||||
GroupSequenceOfRequestsAndCancelsUpdate groupSequenceOfRequestsAndCancelsUpdate = 33;
|
||||
GroupExpirationTimerUpdate groupExpirationTimerUpdate = 34;
|
||||
GroupMemberLabelAccessLevelChangeUpdate groupMemberLabelAccessLevelChangeUpdate = 35;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1126,6 +1128,11 @@ message GroupAttributesAccessLevelChangeUpdate {
|
||||
GroupV2AccessLevel accessLevel = 2;
|
||||
}
|
||||
|
||||
message GroupMemberLabelAccessLevelChangeUpdate {
|
||||
optional bytes updaterAci = 1;
|
||||
GroupV2AccessLevel accessLevel = 2;
|
||||
}
|
||||
|
||||
message GroupAnnouncementOnlyChangeUpdate {
|
||||
optional bytes updaterAci = 1;
|
||||
bool isAnnouncementOnly = 2;
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -186,6 +186,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -186,6 +186,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -186,6 +186,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -163,6 +163,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
@ -263,16 +264,15 @@ Frame {
|
||||
groupChange = GroupChangeChatUpdate {
|
||||
updates = [
|
||||
Update {
|
||||
groupV2MigrationSelfInvitedUpdate = GroupV2MigrationSelfInvitedUpdate {}
|
||||
},
|
||||
Update {
|
||||
groupV2MigrationInvitedMembersUpdate = GroupV2MigrationInvitedMembersUpdate {
|
||||
invitedMembersCount = 2
|
||||
groupMemberLabelAccessLevelChangeUpdate = GroupMemberLabelAccessLevelChangeUpdate {
|
||||
accessLevel = GroupV2AccessLevel.MEMBER
|
||||
updaterAci = <00000000000040008000000000000001>
|
||||
}
|
||||
},
|
||||
Update {
|
||||
groupV2MigrationDroppedMembersUpdate = GroupV2MigrationDroppedMembersUpdate {
|
||||
droppedMembersCount = 3
|
||||
groupMemberLabelAccessLevelChangeUpdate = GroupMemberLabelAccessLevelChangeUpdate {
|
||||
accessLevel = GroupV2AccessLevel.ADMINISTRATOR
|
||||
updaterAci = <00000000000040008000000000000001>
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
Binary file not shown.
@ -0,0 +1,283 @@
|
||||
// This file was auto-generated! It's only meant to show you what's in the .binproto. Do not edit!
|
||||
|
||||
BackupInfo {
|
||||
backupTimeMs = 1715636551000
|
||||
currentAppVersion = "FooClient 2.0.0"
|
||||
debugInfo = <>
|
||||
firstAppVersion = "FooClient 1.0.0"
|
||||
mediaRootBackupKey = <8fba3ce1946b78a4ca0d9229ddb050a12702072309d6574ae12451269e5fdbb2>
|
||||
version = 1
|
||||
}
|
||||
|
||||
Frame {
|
||||
account = AccountData {
|
||||
accountSettings = AccountSettings {
|
||||
allowAutomaticKeyVerification = true
|
||||
appTheme = AppTheme.SYSTEM
|
||||
autoDownloadSettings = AutoDownloadSettings {
|
||||
audio = AutoDownloadOption.WIFI_AND_CELLULAR
|
||||
documents = AutoDownloadOption.WIFI
|
||||
images = AutoDownloadOption.WIFI_AND_CELLULAR
|
||||
video = AutoDownloadOption.WIFI
|
||||
}
|
||||
callsUseLessDataSetting = CallsUseLessDataSetting.NEVER
|
||||
customChatColors = [
|
||||
CustomChatColor {
|
||||
id = 1
|
||||
solid = -16777216
|
||||
},
|
||||
CustomChatColor {
|
||||
id = 2
|
||||
solid = -65536
|
||||
},
|
||||
CustomChatColor {
|
||||
id = 3
|
||||
solid = -16711936
|
||||
}
|
||||
]
|
||||
defaultSentMediaQuality = SentMediaQuality.STANDARD
|
||||
displayBadgesOnProfile = true
|
||||
hasCompletedUsernameOnboarding = true
|
||||
hasSeenGroupStoryEducationSheet = true
|
||||
hasSetMyStoriesPrivacy = true
|
||||
hasViewedOnboardingStory = true
|
||||
keepMutedChatsArchived = true
|
||||
linkPreviews = true
|
||||
notDiscoverableByPhoneNumber = true
|
||||
phoneNumberSharingMode = PhoneNumberSharingMode.NOBODY
|
||||
preferContactAvatars = true
|
||||
preferredReactionEmoji = [
|
||||
"a",
|
||||
"b",
|
||||
"c"
|
||||
]
|
||||
readReceipts = true
|
||||
sealedSenderIndicators = true
|
||||
storiesDisabled = true
|
||||
storyViewReceiptsEnabled = true
|
||||
typingIndicators = true
|
||||
universalExpireTimerSeconds = 3600
|
||||
}
|
||||
avatarUrlPath = ""
|
||||
bioEmoji = ""
|
||||
bioText = ""
|
||||
donationSubscriberData = SubscriberData {
|
||||
currencyCode = "USD"
|
||||
manuallyCancelled = true
|
||||
subscriberId = <ecbb68c734331a2ea333cda747c98c4553652261582b4fce5ae0dea84dce6519>
|
||||
}
|
||||
familyName = "Fett"
|
||||
givenName = "Boba"
|
||||
profileKey = <610291abedc34249489da39a31c9a5cd99cdd26ff58732e268e357ee0075d9d8>
|
||||
svrPin = ""
|
||||
username = "boba_fett.66"
|
||||
usernameLink = UsernameLink {
|
||||
color = Color.OLIVE
|
||||
entropy = <65675c73d00eb01005e3bb7c4a47f296cb6554f78981238815e915d824fd2e93>
|
||||
serverId = <61c101a200d5421789c20518d8497af0>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
id = 1
|
||||
self = Self {
|
||||
avatarColor = AvatarColor.A210
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
id = 2
|
||||
releaseNotes = ReleaseNotes {}
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
distributionList = DistributionListItem {
|
||||
distributionId = <00000000000000000000000000000000>
|
||||
distributionList = DistributionList {
|
||||
name = ""
|
||||
privacyMode = PrivacyMode.ALL
|
||||
}
|
||||
}
|
||||
id = 3
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
contact = Contact {
|
||||
aci = <000a11ce000040008000000000000001>
|
||||
avatarColor = AvatarColor.A110
|
||||
e164 = 16105550101
|
||||
identityKey = <05ea7585ab4f6de1913af6059f69b50ad26c55af2779e31bde58dec8ba165e164e>
|
||||
identityState = IdentityState.DEFAULT
|
||||
note = ""
|
||||
pni = <000a11ce000040008000000000000002>
|
||||
profileFamilyName = "Smith"
|
||||
profileGivenName = "Alice"
|
||||
profileKey = <d75d75d75d75d75d75d75d75d75d75d75d75d75d75d75d75d75d75d75d75d75d>
|
||||
registered = Registered {}
|
||||
systemFamilyName = ""
|
||||
systemGivenName = ""
|
||||
systemNickname = ""
|
||||
visibility = Visibility.VISIBLE
|
||||
}
|
||||
id = 4
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
contact = Contact {
|
||||
aci = <00000b0b000040008000000000000001>
|
||||
avatarColor = AvatarColor.A120
|
||||
e164 = 16105550102
|
||||
identityKey = <052dde6c6dcfaf0ffdcbc5e2eac90e5a18c26969907c942eade3a0e345948be27e>
|
||||
identityState = IdentityState.VERIFIED
|
||||
note = ""
|
||||
pni = <00000b0b000040008000000000000002>
|
||||
profileFamilyName = "Jones"
|
||||
profileGivenName = "Bob"
|
||||
profileKey = <0410410410410410410410410410410410410410410410410410410410410410>
|
||||
registered = Registered {}
|
||||
systemFamilyName = ""
|
||||
systemGivenName = ""
|
||||
systemNickname = ""
|
||||
visibility = Visibility.VISIBLE
|
||||
}
|
||||
id = 5
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
contact = Contact {
|
||||
aci = <0000ca01000040008000000000000001>
|
||||
avatarColor = AvatarColor.A130
|
||||
e164 = 16105550103
|
||||
identityKey = <05463769b7ab7a38be2cbfa7e8cff7e37cbb32770d762370c55cfbe82346593f54>
|
||||
identityState = IdentityState.UNVERIFIED
|
||||
note = ""
|
||||
pni = <0000ca01000040008000000000000002>
|
||||
profileFamilyName = "Johnson"
|
||||
profileGivenName = "Carol"
|
||||
profileKey = <0820820820820820820820820820820820820820820820820820820820820820>
|
||||
registered = Registered {}
|
||||
systemFamilyName = ""
|
||||
systemGivenName = ""
|
||||
systemNickname = ""
|
||||
visibility = Visibility.VISIBLE
|
||||
}
|
||||
id = 6
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
contact = Contact {
|
||||
aci = <000000da000040008000000000000001>
|
||||
avatarColor = AvatarColor.A140
|
||||
e164 = 16105550104
|
||||
identityKey = <059e10072ee327212377ef4c442843b426ea4a1f16a029c23c9d028be4f513a97c>
|
||||
identityState = IdentityState.DEFAULT
|
||||
note = ""
|
||||
pni = <000000da000040008000000000000002>
|
||||
profileFamilyName = "Brown"
|
||||
profileGivenName = "Dan"
|
||||
profileKey = <0c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30>
|
||||
registered = Registered {}
|
||||
systemFamilyName = ""
|
||||
systemGivenName = ""
|
||||
systemNickname = ""
|
||||
visibility = Visibility.VISIBLE
|
||||
}
|
||||
id = 7
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
recipient = Recipient {
|
||||
group = Group {
|
||||
avatarColor = AvatarColor.A170
|
||||
masterKey = <0000000000000000000000000000000000000000000000000000000000000000>
|
||||
snapshot = GroupSnapshot {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
inviteLinkPassword = <>
|
||||
members = [
|
||||
Member {
|
||||
labelEmoji = ""
|
||||
labelString = ""
|
||||
role = Role.ADMINISTRATOR
|
||||
userId = <00000000000040008000000000000001>
|
||||
},
|
||||
Member {
|
||||
labelEmoji = ""
|
||||
labelString = ""
|
||||
role = Role.DEFAULT
|
||||
userId = <000a11ce000040008000000000000001>
|
||||
},
|
||||
Member {
|
||||
labelEmoji = ""
|
||||
labelString = ""
|
||||
role = Role.DEFAULT
|
||||
userId = <00000b0b000040008000000000000001>
|
||||
}
|
||||
]
|
||||
title = GroupAttributeBlob {
|
||||
title = "Me, Alice, Bob"
|
||||
}
|
||||
version = 1
|
||||
}
|
||||
storySendMode = StorySendMode.DEFAULT
|
||||
whitelisted = true
|
||||
}
|
||||
id = 10
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
chat = Chat {
|
||||
expireTimerVersion = 1
|
||||
id = 3
|
||||
recipientId = 10
|
||||
}
|
||||
}
|
||||
|
||||
Frame {
|
||||
chatItem = ChatItem {
|
||||
authorId = 1
|
||||
chatId = 3
|
||||
dateSent = 1853750641458
|
||||
directionless = DirectionlessMessageDetails {}
|
||||
updateMessage = ChatUpdateMessage {
|
||||
groupChange = GroupChangeChatUpdate {
|
||||
updates = [
|
||||
Update {
|
||||
groupV2MigrationSelfInvitedUpdate = GroupV2MigrationSelfInvitedUpdate {}
|
||||
},
|
||||
Update {
|
||||
groupV2MigrationInvitedMembersUpdate = GroupV2MigrationInvitedMembersUpdate {
|
||||
invitedMembersCount = 2
|
||||
}
|
||||
},
|
||||
Update {
|
||||
groupV2MigrationDroppedMembersUpdate = GroupV2MigrationDroppedMembersUpdate {
|
||||
droppedMembersCount = 3
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
@ -209,6 +209,7 @@ Frame {
|
||||
accessControl = AccessControl {
|
||||
addFromInviteLink = AccessRequired.UNSATISFIABLE
|
||||
attributes = AccessRequired.MEMBER
|
||||
memberLabel = AccessRequired.MEMBER
|
||||
members = AccessRequired.MEMBER
|
||||
}
|
||||
avatarUrl = "https://example.com/avatar.jpg"
|
||||
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user