Hide "unencrypted" lock for redacted messages

This commit is contained in:
Samuel Truman 2025-03-13 23:15:55 +01:00
parent 70c8524e20
commit dedc3be0ef
2 changed files with 20 additions and 10 deletions

View file

@ -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.TimelineEvents
import io.element.android.features.messages.impl.timeline.model.TimelineItem 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.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.core.bool.orFalse
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
@ -44,7 +45,8 @@ fun TimelineEventTimestampView(
val hasError = event.localSendState is LocalEventSendState.Failed val hasError = event.localSendState is LocalEventSendState.Failed
val hasEncryptionCritical = event.messageShield?.isCritical.orFalse() val hasEncryptionCritical = event.messageShield?.isCritical.orFalse()
val isMessageEdited = event.content.isEdited() 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( Row(
modifier = Modifier modifier = Modifier
.padding(PaddingValues(start = TimelineEventTimestampViewDefaults.spacing)) .padding(PaddingValues(start = TimelineEventTimestampViewDefaults.spacing))
@ -78,6 +80,8 @@ fun TimelineEventTimestampView(
}, },
) )
} }
if (!isMessageRedacted) {
event.messageShield?.let { shield -> event.messageShield?.let { shield ->
Spacer(modifier = Modifier.width(2.dp)) Spacer(modifier = Modifier.width(2.dp))
Icon( Icon(
@ -94,6 +98,7 @@ fun TimelineEventTimestampView(
} }
} }
} }
}
@PreviewsDayNight @PreviewsDayNight
@Composable @Composable

View file

@ -92,6 +92,11 @@ fun TimelineItemEventContent.isEdited(): Boolean = when (this) {
else -> false else -> false
} }
/**
* Whether the event content has been redacted.
*/
fun TimelineItemEventContent.isRedacted(): Boolean = this is TimelineItemRedactedContent
fun TimelineItemEventContentWithAttachment.duration(): Duration? { fun TimelineItemEventContentWithAttachment.duration(): Duration? {
return when (this) { return when (this) {
is TimelineItemAudioContent -> duration is TimelineItemAudioContent -> duration