Display user verification violation icon in Dm rooms too

Also adjust the icon size, it was larger than it should (24px vs 16px)
This commit is contained in:
Jorge Martín
2025-03-17 10:13:13 +01:00
parent 6dbb371ca2
commit 1fcec95f62
3 changed files with 28 additions and 12 deletions

View File

@@ -187,13 +187,17 @@ class MessagesPresenter @AssistedInject constructor(
val membersState by room.membersStateFlow.collectAsState()
val dmRoomMember by room.getDirectRoomMember(membersState)
val roomMemberIdentityStateChanges = identityChangeState.roomMemberIdentityStateChanges
// TODO use `RoomInfo.isEncrypted` as a key here once it's available
LifecycleResumeEffect(dmRoomMember) {
LifecycleResumeEffect(dmRoomMember, roomMemberIdentityStateChanges) {
if (room.isEncrypted) {
val dmRoomMemberId = dmRoomMember?.userId
localCoroutineScope.launch {
dmRoomMemberId?.let { dmUserVerificationState = encryptionService.getUserIdentity(it).getOrNull() }
dmRoomMemberId?.let { userId ->
dmUserVerificationState = roomMemberIdentityStateChanges.find { it.identityRoomMember.userId == userId }?.identityState
?: encryptionService.getUserIdentity(userId).getOrNull()
}
}
}
onPauseOrDispose {}

View File

@@ -81,7 +81,8 @@ open class MessagesStateProvider : PreviewParameterProvider<MessagesState> {
currentPinnedMessageIndex = 0,
),
),
aMessagesState(roomName = AsyncData.Success("A DM with a very looong name"), dmUserVerificationState = IdentityState.Verified)
aMessagesState(roomName = AsyncData.Success("A DM with a very looong name"), dmUserVerificationState = IdentityState.Verified),
aMessagesState(roomName = AsyncData.Success("A DM with a very looong name"), dmUserVerificationState = IdentityState.VerificationViolation),
)
}

View File

@@ -191,7 +191,7 @@ fun MessagesView(
roomAvatar = state.roomAvatar.dataOrNull(),
heroes = state.heroes,
roomCallState = state.roomCallState,
isDmUserVerified = state.dmUserVerificationState?.let { it == IdentityState.Verified },
dmUserIdentityState = state.dmUserVerificationState,
onBackClick = { hidingKeyboard { onBackClick() } },
onRoomDetailsClick = { hidingKeyboard { onRoomDetailsClick() } },
onJoinCallClick = onJoinCallClick,
@@ -458,7 +458,7 @@ private fun MessagesViewTopBar(
roomAvatar: AvatarData?,
heroes: ImmutableList<AvatarData>,
roomCallState: RoomCallState,
isDmUserVerified: Boolean?,
dmUserIdentityState: IdentityState?,
onRoomDetailsClick: () -> Unit,
onJoinCallClick: () -> Unit,
onBackClick: () -> Unit,
@@ -490,13 +490,24 @@ private fun MessagesViewTopBar(
)
}
if (isDmUserVerified == true) {
Icon(
modifier = Modifier.requiredWidthIn(min = 24.dp),
imageVector = CompoundIcons.Verified(),
tint = ElementTheme.colors.iconSuccessPrimary,
contentDescription = null
)
when (dmUserIdentityState) {
IdentityState.Verified -> {
Icon(
modifier = Modifier.requiredWidthIn(min = 16.dp),
imageVector = CompoundIcons.Verified(),
tint = ElementTheme.colors.iconSuccessPrimary,
contentDescription = null,
)
}
IdentityState.VerificationViolation -> {
Icon(
modifier = Modifier.requiredWidthIn(min = 16.dp),
imageVector = CompoundIcons.ErrorSolid(),
tint = ElementTheme.colors.iconCriticalPrimary,
contentDescription = null,
)
}
else -> Unit
}
}
},