Merge pull request #4429 from element-hq/feature/bma/hideUnencryptedLockForRedactedMsgs
Hide unencrypted lock for redacted msgs
This commit is contained in:
@@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Timel
|
||||
aTimelineItemEvent(
|
||||
messageShield = MessageShield.UnknownDevice(isCritical = true),
|
||||
),
|
||||
aTimelineItemEvent(
|
||||
content = aTimelineItemRedactedContent(),
|
||||
messageShield = MessageShield.SentInClear(isCritical = true),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -22,18 +22,25 @@ internal fun TimelineItemEventRowTimestampPreview(
|
||||
@PreviewParameter(TimelineItemEventForTimestampViewProvider::class) event: TimelineItem.Event
|
||||
) = ElementPreview {
|
||||
Column {
|
||||
val oldContent = event.content as TimelineItemTextContent
|
||||
listOf(
|
||||
"Text",
|
||||
"Text longer, displayed on 1 line",
|
||||
"Text which should be rendered on several lines",
|
||||
).forEach { str ->
|
||||
ATimelineItemEventRow(
|
||||
event = event.copy(
|
||||
content = oldContent.copy(
|
||||
body = str,
|
||||
pillifiedBody = str,
|
||||
when (event.content) {
|
||||
is TimelineItemTextContent -> listOf(
|
||||
"Text",
|
||||
"Text longer, displayed on 1 line",
|
||||
"Text which should be rendered on several lines",
|
||||
).forEach { str ->
|
||||
ATimelineItemEventRow(
|
||||
event = event.copy(
|
||||
content = event.content.copy(
|
||||
body = str,
|
||||
pillifiedBody = str,
|
||||
),
|
||||
reactionsState = aTimelineItemReactions(count = 0),
|
||||
),
|
||||
)
|
||||
}
|
||||
else -> ATimelineItemEventRow(
|
||||
event = event.copy(
|
||||
content = event.content,
|
||||
reactionsState = aTimelineItemReactions(count = 0),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user