From 815fca38e3cb232650785ccf43f3695fa130c224 Mon Sep 17 00:00:00 2001 From: "sergei.bakhtiarov" Date: Wed, 4 Feb 2026 17:00:22 +0100 Subject: [PATCH] fix: e2ei identity certificate status (WPB-20235) --- .../wire/android/ui/authentication/devices/DeviceItem.kt | 4 ++-- .../android/ui/settings/devices/DeviceDetailsScreen.kt | 6 +++--- .../android/ui/settings/devices/DeviceDetailsViewModel.kt | 7 +++++++ .../ui/settings/devices/model/DeviceDetailsState.kt | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt b/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt index 2a4f0de0186..a130461d8a3 100644 --- a/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt +++ b/app/src/main/kotlin/com/wire/android/ui/authentication/devices/DeviceItem.kt @@ -209,8 +209,8 @@ private fun ColumnScope.DeviceItemTexts( .then(semantic) ) if (shouldShowVerifyLabel) { - if (shouldShowE2EIInfo) { - MLSVerificationIcon(device.mlsClientIdentity?.e2eiStatus) + if (shouldShowE2EIInfo && device.mlsClientIdentity != null) { + MLSVerificationIcon(device.mlsClientIdentity.e2eiStatus) } if (device.isVerifiedProteus && !isCurrentClient) { ProteusVerifiedIcon( diff --git a/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt b/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt index 0bbb477802e..bd52be7feb8 100644 --- a/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt +++ b/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsScreen.kt @@ -216,7 +216,7 @@ fun DeviceDetailsContent( } } - if (state.isE2EIEnabled) { + if (state.isE2EIEnabled && state.isE2eiCertificateDataAvailable) { item { EndToEndIdentityCertificateItem( isE2eiCertificateActivated = state.isE2eiCertificateActivated, @@ -363,8 +363,8 @@ private fun DeviceDetailsTopBar( maxLines = 2 ) - if (shouldShowE2EIInfo) { - MLSVerificationIcon(device.mlsClientIdentity?.e2eiStatus) + if (shouldShowE2EIInfo && device.mlsClientIdentity != null) { + MLSVerificationIcon(device.mlsClientIdentity.e2eiStatus) } if (!isCurrentDevice && device.isVerifiedProteus) { diff --git a/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsViewModel.kt b/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsViewModel.kt index e46729a53e4..90194d66399 100644 --- a/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsViewModel.kt +++ b/app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsViewModel.kt @@ -142,6 +142,13 @@ class DeviceDetailsViewModel @Inject constructor( private fun getE2eiCertificate() { viewModelScope.launch { state = when (val result = mlsClientIdentity(deviceId)) { + is GetMLSClientIdentityResult.Failure.E2EINotAvailable -> { + state.copy( + isE2eiCertificateActivated = false, + isLoadingCertificate = false, + isE2eiCertificateDataAvailable = false + ) + } is GetMLSClientIdentityResult.Failure -> { state.copy(isE2eiCertificateActivated = false, isLoadingCertificate = false) } diff --git a/app/src/main/kotlin/com/wire/android/ui/settings/devices/model/DeviceDetailsState.kt b/app/src/main/kotlin/com/wire/android/ui/settings/devices/model/DeviceDetailsState.kt index 0933e19cb7c..b059dd65def 100644 --- a/app/src/main/kotlin/com/wire/android/ui/settings/devices/model/DeviceDetailsState.kt +++ b/app/src/main/kotlin/com/wire/android/ui/settings/devices/model/DeviceDetailsState.kt @@ -40,4 +40,5 @@ data class DeviceDetailsState( val startGettingE2EICertificate: Boolean = false, val mlsCipherSuiteSignature: String? = null, val deviceRemoved: Boolean = false, + val isE2eiCertificateDataAvailable: Boolean = true, )