Iterate on shield mapping and rendering

Also handle click on the timeline and information displayed on long click.
This commit is contained in:
Benoit Marty 2024-08-14 17:02:21 +02:00 committed by Benoit Marty
parent 5d10b1fe85
commit faf1e7da9f
24 changed files with 399 additions and 245 deletions

View file

@ -16,12 +16,32 @@
package io.element.android.libraries.matrix.api.timeline.item.event
data class MessageShield(
val message: String,
val color: ShieldColor,
)
import androidx.compose.runtime.Immutable
enum class ShieldColor {
RED,
GREY
@Immutable
sealed interface MessageShield {
/** Not enough information available to check the authenticity.*/
data class AuthenticityNotGuaranteed(val isCritical: Boolean) : MessageShield
/** The sending device isn't yet known by the Client.*/
data class UnknownDevice(val isCritical: Boolean) : MessageShield
/** The sending device hasn't been verified by the sender.*/
data class UnsignedDevice(val isCritical: Boolean) : MessageShield
/** The sender hasn't been verified by the Client's user.*/
data class UnverifiedIdentity(val isCritical: Boolean) : MessageShield
/** An unencrypted event in an encrypted room.*/
data class SentInClear(val isCritical: Boolean) : MessageShield
}
fun MessageShield.isCritical(): Boolean {
return when (this) {
is MessageShield.AuthenticityNotGuaranteed -> isCritical
is MessageShield.UnknownDevice -> isCritical
is MessageShield.UnsignedDevice -> isCritical
is MessageShield.UnverifiedIdentity -> isCritical
is MessageShield.SentInClear -> isCritical
}
}