diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageShieldView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageShieldView.kt index 73d4c9ba88..9f9dc0ba05 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageShieldView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/MessageShieldView.kt @@ -88,6 +88,7 @@ internal fun MessageShield.toText(): String { is MessageShield.UnsignedDevice -> CommonStrings.event_shield_reason_unsigned_device is MessageShield.UnverifiedIdentity -> CommonStrings.event_shield_reason_unverified_identity is MessageShield.SentInClear -> CommonStrings.event_shield_reason_sent_in_clear + is MessageShield.PreviouslyVerified -> CommonStrings.event_shield_reason_previously_verified } ) } @@ -98,7 +99,8 @@ internal fun MessageShield.toIcon(): ImageVector { is MessageShield.AuthenticityNotGuaranteed -> CompoundIcons.Info() is MessageShield.UnknownDevice, is MessageShield.UnsignedDevice, - is MessageShield.UnverifiedIdentity -> CompoundIcons.HelpSolid() + is MessageShield.UnverifiedIdentity, + is MessageShield.PreviouslyVerified -> CompoundIcons.HelpSolid() is MessageShield.SentInClear -> CompoundIcons.LockOff() } } @@ -126,6 +128,9 @@ internal fun MessageShieldViewPreview() { MessageShieldView( shield = MessageShield.SentInClear(false) ) + MessageShieldView( + shield = MessageShield.PreviouslyVerified(false) + ) } } } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageShield.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageShield.kt index 9092817569..140df16d66 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageShield.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageShield.kt @@ -34,6 +34,9 @@ sealed interface MessageShield { /** An unencrypted event in an encrypted room. */ data class SentInClear(val isCritical: Boolean) : MessageShield + + /** The sender was previously verified but changed their identity. */ + data class PreviouslyVerified(val isCritical: Boolean) : MessageShield } val MessageShield.isCritical: Boolean @@ -43,4 +46,5 @@ val MessageShield.isCritical: Boolean is MessageShield.UnsignedDevice -> isCritical is MessageShield.UnverifiedIdentity -> isCritical is MessageShield.SentInClear -> isCritical + is MessageShield.PreviouslyVerified -> isCritical } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt index 523b8e1fb5..8a155b2826 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventTimelineItemMapper.kt @@ -152,5 +152,6 @@ private fun ShieldState?.map(): MessageShield? { ShieldStateCode.UNSIGNED_DEVICE -> MessageShield.UnsignedDevice(isCritical) ShieldStateCode.UNVERIFIED_IDENTITY -> MessageShield.UnverifiedIdentity(isCritical) ShieldStateCode.SENT_IN_CLEAR -> MessageShield.SentInClear(isCritical) + ShieldStateCode.PREVIOUSLY_VERIFIED -> MessageShield.PreviouslyVerified(isCritical) } }