Skip to content

Commit f76a6de

Browse files
authored
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)
2 parents 6f0a95b + 4cd4cf1 commit f76a6de

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

changelog.d/7710.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix usage of unknown shield in room summary

vector/src/main/java/im/vector/app/core/ui/views/ShieldImageView.kt

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,34 @@ class ShieldImageView @JvmOverloads constructor(
3838
}
3939
}
4040

41+
/**
42+
* Renders device shield with the support of unknown shields instead of black shields which is used for rooms.
43+
* @param roomEncryptionTrustLevel trust level that is usally calculated with [im.vector.app.features.settings.devices.TrustUtils.shieldForTrust]
44+
* @param borderLess if true then the shield icon with border around is used
45+
*/
46+
fun renderDeviceShield(roomEncryptionTrustLevel: RoomEncryptionTrustLevel?, borderLess: Boolean = false) {
47+
isVisible = roomEncryptionTrustLevel != null
48+
49+
if (roomEncryptionTrustLevel == RoomEncryptionTrustLevel.Default) {
50+
contentDescription = context.getString(R.string.a11y_trust_level_default)
51+
setImageResource(
52+
if (borderLess) R.drawable.ic_shield_unknown_no_border
53+
else R.drawable.ic_shield_unknown
54+
)
55+
} else {
56+
render(roomEncryptionTrustLevel, borderLess)
57+
}
58+
}
59+
4160
fun render(roomEncryptionTrustLevel: RoomEncryptionTrustLevel?, borderLess: Boolean = false) {
4261
isVisible = roomEncryptionTrustLevel != null
4362

4463
when (roomEncryptionTrustLevel) {
4564
RoomEncryptionTrustLevel.Default -> {
4665
contentDescription = context.getString(R.string.a11y_trust_level_default)
4766
setImageResource(
48-
if (borderLess) R.drawable.ic_shield_unknown_no_border
49-
else R.drawable.ic_shield_unknown
67+
if (borderLess) R.drawable.ic_shield_black_no_border
68+
else R.drawable.ic_shield_black
5069
)
5170
}
5271
RoomEncryptionTrustLevel.Warning -> {
@@ -137,7 +156,7 @@ class ShieldImageView @JvmOverloads constructor(
137156
@DrawableRes
138157
fun RoomEncryptionTrustLevel.toDrawableRes(): Int {
139158
return when (this) {
140-
RoomEncryptionTrustLevel.Default -> R.drawable.ic_shield_unknown
159+
RoomEncryptionTrustLevel.Default -> R.drawable.ic_shield_black
141160
RoomEncryptionTrustLevel.Warning -> R.drawable.ic_shield_warning
142161
RoomEncryptionTrustLevel.Trusted -> R.drawable.ic_shield_trusted
143162
RoomEncryptionTrustLevel.E2EWithUnsupportedAlgorithm -> R.drawable.ic_warning_badge

vector/src/main/java/im/vector/app/features/settings/devices/DeviceItem.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ abstract class DeviceItem : VectorEpoxyModel<DeviceItem.Holder>(R.layout.item_de
8585
trusted
8686
)
8787

88-
holder.trustIcon.render(shield)
88+
holder.trustIcon.renderDeviceShield(shield)
8989
} else {
90-
holder.trustIcon.render(null)
90+
holder.trustIcon.renderDeviceShield(null)
9191
}
9292

9393
val detailedModeLabels = listOf(

vector/src/main/java/im/vector/app/features/settings/devices/v2/list/OtherSessionItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ abstract class OtherSessionItem : VectorEpoxyModel<OtherSessionItem.Holder>(R.la
9797
} else {
9898
setDeviceTypeIconUseCase.execute(deviceType, holder.otherSessionDeviceTypeImageView, stringProvider)
9999
}
100-
holder.otherSessionVerificationStatusImageView.render(roomEncryptionTrustLevel)
100+
holder.otherSessionVerificationStatusImageView.renderDeviceShield(roomEncryptionTrustLevel)
101101
holder.otherSessionNameTextView.text = sessionName
102102
holder.otherSessionDescriptionTextView.text = sessionDescription
103103
sessionDescriptionColor?.let {

vector/src/main/java/im/vector/app/features/settings/devices/v2/list/SessionInfoView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class SessionInfoView @JvmOverloads constructor(
9090
hasLearnMoreLink: Boolean,
9191
isVerifyButtonVisible: Boolean,
9292
) {
93-
views.sessionInfoVerificationStatusImageView.render(encryptionTrustLevel)
93+
views.sessionInfoVerificationStatusImageView.renderDeviceShield(encryptionTrustLevel)
9494
when {
9595
encryptionTrustLevel == RoomEncryptionTrustLevel.Trusted -> renderCrossSigningVerified(isCurrentSession)
9696
encryptionTrustLevel == RoomEncryptionTrustLevel.Default && !isCurrentSession -> renderCrossSigningUnknown()

0 commit comments

Comments
 (0)