Merge pull request #7710 from vector-im/feature/ons/fix_unknown_shield_icon_in_room

Fix usage of unknown shield in room summary (PSG-1019)
This commit is contained in:
Onuray Sahin 2022-12-06 17:51:04 +03:00 committed by GitHub
commit f76a6de10d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 7 deletions

1
changelog.d/7710.bugfix Normal file
View File

@ -0,0 +1 @@
Fix usage of unknown shield in room summary

View File

@ -38,6 +38,25 @@ class ShieldImageView @JvmOverloads constructor(
} }
} }
/**
* Renders device shield with the support of unknown shields instead of black shields which is used for rooms.
* @param roomEncryptionTrustLevel trust level that is usally calculated with [im.vector.app.features.settings.devices.TrustUtils.shieldForTrust]
* @param borderLess if true then the shield icon with border around is used
*/
fun renderDeviceShield(roomEncryptionTrustLevel: RoomEncryptionTrustLevel?, borderLess: Boolean = false) {
isVisible = roomEncryptionTrustLevel != null
if (roomEncryptionTrustLevel == RoomEncryptionTrustLevel.Default) {
contentDescription = context.getString(R.string.a11y_trust_level_default)
setImageResource(
if (borderLess) R.drawable.ic_shield_unknown_no_border
else R.drawable.ic_shield_unknown
)
} else {
render(roomEncryptionTrustLevel, borderLess)
}
}
fun render(roomEncryptionTrustLevel: RoomEncryptionTrustLevel?, borderLess: Boolean = false) { fun render(roomEncryptionTrustLevel: RoomEncryptionTrustLevel?, borderLess: Boolean = false) {
isVisible = roomEncryptionTrustLevel != null isVisible = roomEncryptionTrustLevel != null
@ -45,8 +64,8 @@ class ShieldImageView @JvmOverloads constructor(
RoomEncryptionTrustLevel.Default -> { RoomEncryptionTrustLevel.Default -> {
contentDescription = context.getString(R.string.a11y_trust_level_default) contentDescription = context.getString(R.string.a11y_trust_level_default)
setImageResource( setImageResource(
if (borderLess) R.drawable.ic_shield_unknown_no_border if (borderLess) R.drawable.ic_shield_black_no_border
else R.drawable.ic_shield_unknown else R.drawable.ic_shield_black
) )
} }
RoomEncryptionTrustLevel.Warning -> { RoomEncryptionTrustLevel.Warning -> {
@ -137,7 +156,7 @@ class ShieldImageView @JvmOverloads constructor(
@DrawableRes @DrawableRes
fun RoomEncryptionTrustLevel.toDrawableRes(): Int { fun RoomEncryptionTrustLevel.toDrawableRes(): Int {
return when (this) { return when (this) {
RoomEncryptionTrustLevel.Default -> R.drawable.ic_shield_unknown RoomEncryptionTrustLevel.Default -> R.drawable.ic_shield_black
RoomEncryptionTrustLevel.Warning -> R.drawable.ic_shield_warning RoomEncryptionTrustLevel.Warning -> R.drawable.ic_shield_warning
RoomEncryptionTrustLevel.Trusted -> R.drawable.ic_shield_trusted RoomEncryptionTrustLevel.Trusted -> R.drawable.ic_shield_trusted
RoomEncryptionTrustLevel.E2EWithUnsupportedAlgorithm -> R.drawable.ic_warning_badge RoomEncryptionTrustLevel.E2EWithUnsupportedAlgorithm -> R.drawable.ic_warning_badge

View File

@ -85,9 +85,9 @@ abstract class DeviceItem : VectorEpoxyModel<DeviceItem.Holder>(R.layout.item_de
trusted trusted
) )
holder.trustIcon.render(shield) holder.trustIcon.renderDeviceShield(shield)
} else { } else {
holder.trustIcon.render(null) holder.trustIcon.renderDeviceShield(null)
} }
val detailedModeLabels = listOf( val detailedModeLabels = listOf(

View File

@ -97,7 +97,7 @@ abstract class OtherSessionItem : VectorEpoxyModel<OtherSessionItem.Holder>(R.la
} else { } else {
setDeviceTypeIconUseCase.execute(deviceType, holder.otherSessionDeviceTypeImageView, stringProvider) setDeviceTypeIconUseCase.execute(deviceType, holder.otherSessionDeviceTypeImageView, stringProvider)
} }
holder.otherSessionVerificationStatusImageView.render(roomEncryptionTrustLevel) holder.otherSessionVerificationStatusImageView.renderDeviceShield(roomEncryptionTrustLevel)
holder.otherSessionNameTextView.text = sessionName holder.otherSessionNameTextView.text = sessionName
holder.otherSessionDescriptionTextView.text = sessionDescription holder.otherSessionDescriptionTextView.text = sessionDescription
sessionDescriptionColor?.let { sessionDescriptionColor?.let {

View File

@ -90,7 +90,7 @@ class SessionInfoView @JvmOverloads constructor(
hasLearnMoreLink: Boolean, hasLearnMoreLink: Boolean,
isVerifyButtonVisible: Boolean, isVerifyButtonVisible: Boolean,
) { ) {
views.sessionInfoVerificationStatusImageView.render(encryptionTrustLevel) views.sessionInfoVerificationStatusImageView.renderDeviceShield(encryptionTrustLevel)
when { when {
encryptionTrustLevel == RoomEncryptionTrustLevel.Trusted -> renderCrossSigningVerified(isCurrentSession) encryptionTrustLevel == RoomEncryptionTrustLevel.Trusted -> renderCrossSigningVerified(isCurrentSession)
encryptionTrustLevel == RoomEncryptionTrustLevel.Default && !isCurrentSession -> renderCrossSigningUnknown() encryptionTrustLevel == RoomEncryptionTrustLevel.Default && !isCurrentSession -> renderCrossSigningUnknown()