From dedc3be0efce675bd70fd5eff4464acd5ddc8a38 Mon Sep 17 00:00:00 2001 From: Samuel Truman Date: Thu, 13 Mar 2025 23:15:55 +0100 Subject: [PATCH 1/4] Hide "unencrypted" lock for redacted messages --- .../components/TimelineEventTimestampView.kt | 25 +++++++++++-------- .../model/event/TimelineItemEventContent.kt | 5 ++++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt index 8dccfb586d..9a467eeea7 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt @@ -25,6 +25,7 @@ import io.element.android.compound.tokens.generated.CompoundIcons import io.element.android.features.messages.impl.timeline.TimelineEvents import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.event.isEdited +import io.element.android.features.messages.impl.timeline.model.event.isRedacted import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -44,7 +45,8 @@ fun TimelineEventTimestampView( val hasError = event.localSendState is LocalEventSendState.Failed val hasEncryptionCritical = event.messageShield?.isCritical.orFalse() val isMessageEdited = event.content.isEdited() - val tint = if (hasError || hasEncryptionCritical) ElementTheme.colors.textCriticalPrimary else ElementTheme.colors.textSecondary + val isMessageRedacted = event.content.isRedacted() + val tint = if (hasError || hasEncryptionCritical && !isMessageRedacted) ElementTheme.colors.textCriticalPrimary else ElementTheme.colors.textSecondary Row( modifier = Modifier .padding(PaddingValues(start = TimelineEventTimestampViewDefaults.spacing)) @@ -78,19 +80,22 @@ fun TimelineEventTimestampView( }, ) } - event.messageShield?.let { shield -> - Spacer(modifier = Modifier.width(2.dp)) - Icon( - imageVector = shield.toIcon(), - contentDescription = shield.toText(), - modifier = Modifier + + if (!isMessageRedacted) { + event.messageShield?.let { shield -> + Spacer(modifier = Modifier.width(2.dp)) + Icon( + imageVector = shield.toIcon(), + contentDescription = shield.toText(), + modifier = Modifier .size(15.dp) .clickable { eventSink(TimelineEvents.ShowShieldDialog(shield)) }, - tint = shield.toIconColor(), - ) - Spacer(modifier = Modifier.width(4.dp)) + tint = shield.toIconColor(), + ) + Spacer(modifier = Modifier.width(4.dp)) + } } } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt index 9eda2e7253..6c20d7326f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEventContent.kt @@ -92,6 +92,11 @@ fun TimelineItemEventContent.isEdited(): Boolean = when (this) { else -> false } +/** + * Whether the event content has been redacted. + */ +fun TimelineItemEventContent.isRedacted(): Boolean = this is TimelineItemRedactedContent + fun TimelineItemEventContentWithAttachment.duration(): Duration? { return when (this) { is TimelineItemAudioContent -> duration From 5fd6520ac294c4709899fc4e4f0175fa2d8f52c2 Mon Sep 17 00:00:00 2001 From: Samuel Truman Date: Fri, 14 Mar 2025 20:29:42 +0100 Subject: [PATCH 2/4] Added preview for redacted messages --- .../components/TimelineItemEventForTimestampViewProvider.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt index b3cb657d66..568df86295 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt @@ -10,6 +10,7 @@ package io.element.android.features.messages.impl.timeline.components import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.features.messages.impl.timeline.aTimelineItemEvent import io.element.android.features.messages.impl.timeline.model.TimelineItem +import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemRedactedContent import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield @@ -33,5 +34,9 @@ class TimelineItemEventForTimestampViewProvider : PreviewParameterProvider Date: Tue, 18 Mar 2025 12:27:57 +0100 Subject: [PATCH 3/4] Comment out new preview. --- .../TimelineItemEventForTimestampViewProvider.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt index 568df86295..40f32becde 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt @@ -34,9 +34,9 @@ class TimelineItemEventForTimestampViewProvider : PreviewParameterProvider Date: Tue, 18 Mar 2025 12:28:57 +0100 Subject: [PATCH 4/4] Remove unused import --- .../components/TimelineItemEventForTimestampViewProvider.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt index 40f32becde..dbec4afaf6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt @@ -10,7 +10,6 @@ package io.element.android.features.messages.impl.timeline.components import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.features.messages.impl.timeline.aTimelineItemEvent import io.element.android.features.messages.impl.timeline.model.TimelineItem -import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemRedactedContent import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState import io.element.android.libraries.matrix.api.timeline.item.event.MessageShield