From b7d4c8d69e93b1bb5f09dd0fa7e3f5e3f4f84829 Mon Sep 17 00:00:00 2001 From: boris Date: Fri, 29 Sep 2023 13:54:51 +0300 Subject: [PATCH] feat: Handle new SystemMessages (#2289) --- .../com/wire/android/mapper/SystemMessageContentMapper.kt | 5 +++++ .../android/ui/home/conversations/SystemMessageItem.kt | 3 +++ .../wire/android/ui/home/conversations/model/UIMessage.kt | 7 +++++++ app/src/main/res/values/strings.xml | 2 ++ kalium | 2 +- 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt b/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt index abbd03a056..676cb93a7f 100644 --- a/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt +++ b/app/src/main/kotlin/com/wire/android/mapper/SystemMessageContentMapper.kt @@ -65,6 +65,8 @@ class SystemMessageContentMapper @Inject constructor( is MessageContent.MLSWrongEpochWarning -> mapMLSWrongEpochWarning() is MessageContent.ConversationDegradedMLS -> mapConversationDegraded(Conversation.Protocol.MLS) is MessageContent.ConversationDegradedProteus -> mapConversationDegraded(Conversation.Protocol.PROTEUS) + is MessageContent.ConversationVerifiedMLS -> mapConversationVerified(Conversation.Protocol.MLS) + is MessageContent.ConversationVerifiedProteus -> mapConversationVerified(Conversation.Protocol.PROTEUS) is MessageContent.FederationStopped -> mapFederationMessage(content) } @@ -239,6 +241,9 @@ class SystemMessageContentMapper @Inject constructor( private fun mapConversationDegraded(protocol: Conversation.Protocol): UIMessageContent.SystemMessage = UIMessageContent.SystemMessage.ConversationDegraded(protocol) + private fun mapConversationVerified(protocol: Conversation.Protocol): UIMessageContent.SystemMessage = + UIMessageContent.SystemMessage.ConversationVerified(protocol) + fun mapMemberName(user: User?, type: SelfNameType = SelfNameType.NameOrDeleted): UIText = when (user) { is OtherUser -> user.name?.let { UIText.DynamicString(it) } ?: UIText.StringResource(messageResourceProvider.memberNameDeleted) is SelfUser -> when (type) { diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt index 645015aba7..f87ad8437a 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/SystemMessageItem.kt @@ -244,6 +244,7 @@ private fun getColorFilter(message: SystemMessage): ColorFilter? { is SystemMessage.MissedCall.OtherCalled -> null is SystemMessage.MissedCall.YouCalled -> null is SystemMessage.ConversationDegraded -> null + is SystemMessage.ConversationVerified -> null is SystemMessage.Knock -> ColorFilter.tint(colorsScheme().primary) is SystemMessage.MemberFailedToAdd -> ColorFilter.tint(colorsScheme().error) is SystemMessage.MemberAdded, @@ -488,6 +489,7 @@ private val SystemMessage.expandable is SystemMessage.ConversationStartedWithMembers -> this.memberNames.size > EXPANDABLE_THRESHOLD is SystemMessage.MemberFailedToAdd -> this.usersCount > SINGLE_EXPANDABLE_THRESHOLD is SystemMessage.ConversationDegraded -> false + is SystemMessage.ConversationVerified -> false is SystemMessage.FederationStopped -> false } @@ -552,6 +554,7 @@ fun SystemMessage.annotatedString( is SystemMessage.HistoryLost -> arrayOf() is SystemMessage.MLSWrongEpochWarning -> arrayOf() is SystemMessage.ConversationDegraded -> arrayOf() + is SystemMessage.ConversationVerified -> arrayOf() is SystemMessage.ConversationMessageTimerActivated -> arrayOf( author.asString(res), selfDeletionDuration.longLabel.asString(res) diff --git a/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt b/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt index 6ae37e9a65..0a34ec07df 100644 --- a/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt +++ b/app/src/main/kotlin/com/wire/android/ui/home/conversations/model/UIMessage.kt @@ -448,6 +448,13 @@ sealed class UIMessageContent { else R.drawable.ic_shield_holo, R.string.label_system_message_conversation_degraded ) + + data class ConversationVerified(val protocol: Conversation.Protocol) : SystemMessage( + if (protocol == Conversation.Protocol.MLS) R.drawable.ic_certificate_valid_mls + else R.drawable.ic_certificate_valid_proteus, + if (protocol == Conversation.Protocol.MLS) R.string.label_system_message_conversation_verified_mls + else R.string.label_system_message_conversation_verified_proteus + ) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2d2375f92e..3f3e9119bc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -603,6 +603,8 @@ %1$s could not be added to the group. %1$s could not be added to the group. This conversation is no longer verified, as some user uses at least one device without a valid end-to-end identity certificate. + All devices are verified (end-to-end identity) + All fingerprints are verified (Proteus) You added 1 person to the conversation diff --git a/kalium b/kalium index 2497ff627a..91c2b37c5b 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit 2497ff627a19874849c7d8d307bb4790b77945cb +Subproject commit 91c2b37c5b86662f875e91aebf60f799baf7dfac