From 4766bc709d2f3b788536acef586554f3fc8f0da6 Mon Sep 17 00:00:00 2001 From: valere Date: Thu, 8 Dec 2022 18:06:05 +0100 Subject: [PATCH] Fix: ER showing shields in clear rooms --- .../sdk/internal/crypto/CryptoSessionInfoProvider.kt | 2 +- .../crypto/network/OutgoingRequestsProcessor.kt | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoSessionInfoProvider.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoSessionInfoProvider.kt index 8552f57272..1eaf1a8085 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoSessionInfoProvider.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/CryptoSessionInfoProvider.kt @@ -100,7 +100,7 @@ internal class CryptoSessionInfoProvider @Inject constructor( return roomIds.orEmpty() } - fun updateShieldForRoom(roomId: String, shield: RoomEncryptionTrustLevel) { + fun updateShieldForRoom(roomId: String, shield: RoomEncryptionTrustLevel?) { monarchy.writeAsync { realm -> val summary = RoomSummaryEntity.where(realm, roomId = roomId).findFirst() summary?.roomEncryptionTrustLevel = shield diff --git a/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/network/OutgoingRequestsProcessor.kt b/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/network/OutgoingRequestsProcessor.kt index 5f59fad6a3..0119af3bdf 100644 --- a/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/network/OutgoingRequestsProcessor.kt +++ b/matrix-sdk-android/src/rustCrypto/java/org/matrix/android/sdk/internal/crypto/network/OutgoingRequestsProcessor.kt @@ -145,9 +145,13 @@ internal class OutgoingRequestsProcessor @Inject constructor( private fun CoroutineScope.updateShields(olmMachine: OlmMachine, userIds: List) = launch { cryptoSessionInfoProvider.getRoomsWhereUsersAreParticipating(userIds).forEach { roomId -> - val userGroup = cryptoSessionInfoProvider.getUserListForShieldComputation(roomId) - val shield = computeShieldForGroup(olmMachine, userGroup) - cryptoSessionInfoProvider.updateShieldForRoom(roomId, shield) + if (cryptoSessionInfoProvider.isRoomEncrypted(roomId)) { + val userGroup = cryptoSessionInfoProvider.getUserListForShieldComputation(roomId) + val shield = computeShieldForGroup(olmMachine, userGroup) + cryptoSessionInfoProvider.updateShieldForRoom(roomId, shield) + } else { + cryptoSessionInfoProvider.updateShieldForRoom(roomId, null) + } } }