From 48fffc3dcf09f62b2e9e48dadc91c7e2366e8666 Mon Sep 17 00:00:00 2001 From: Valere Date: Fri, 18 Feb 2022 10:08:44 +0100 Subject: [PATCH] Code review --- .../android/sdk/api/session/crypto/CryptoService.kt | 8 -------- .../android/sdk/internal/crypto/DefaultCryptoService.kt | 4 ---- .../android/sdk/internal/crypto/store/IMXCryptoStore.kt | 6 ++++++ .../room/send/queue/EventSenderProcessorCoroutine.kt | 7 ++++--- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt index 9b617f3e4f..e3f00a24b6 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt @@ -113,14 +113,6 @@ interface CryptoService { fun isRoomEncrypted(roomId: String): Boolean - /** - * This is a bit different than isRoomEncrypted - * A room is encrypted when there is a m.room.encryption state event in the room (malformed/invalid or not) - * But the crypto layer has additional guaranty to ensure that encryption would never been reverted - * It's defensive coding out of precaution (if ever state is reset) - */ - fun shouldEncryptInRoom(roomId: String?): Boolean - fun encryptEventContent(eventContent: Content, eventType: String, roomId: String, diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt index f10cde6759..0646e4d2b8 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt @@ -634,10 +634,6 @@ internal class DefaultCryptoService @Inject constructor( return cryptoSessionInfoProvider.isRoomEncrypted(roomId) } - override fun shouldEncryptInRoom(roomId: String?): Boolean { - return roomId?.let { cryptoStore.roomWasOnceEncrypted(it) } ?: false - } - /** * @return the stored device keys for a user. */ diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt index 46f94bc3bc..96ea5c03fa 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/IMXCryptoStore.kt @@ -240,6 +240,12 @@ internal interface IMXCryptoStore { */ fun getRoomAlgorithm(roomId: String): String? + /** + * This is a bit different than isRoomEncrypted + * A room is encrypted when there is a m.room.encryption state event in the room (malformed/invalid or not) + * But the crypto layer has additional guaranty to ensure that encryption would never been reverted + * It's defensive coding out of precaution (if ever state is reset) + */ fun roomWasOnceEncrypted(roomId: String): Boolean fun shouldEncryptForInvitedMembers(roomId: String): Boolean diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt index f892dcee55..5b4efa5df6 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt @@ -26,9 +26,9 @@ import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.failure.getRetryDelay import org.matrix.android.sdk.api.failure.isLimitExceededError import org.matrix.android.sdk.api.session.Session -import org.matrix.android.sdk.api.session.crypto.CryptoService import org.matrix.android.sdk.api.session.events.model.Event import org.matrix.android.sdk.api.util.Cancelable +import org.matrix.android.sdk.internal.crypto.store.IMXCryptoStore import org.matrix.android.sdk.internal.session.SessionScope import org.matrix.android.sdk.internal.task.CoroutineSequencer import org.matrix.android.sdk.internal.task.SemaphoreCoroutineSequencer @@ -54,7 +54,7 @@ private const val MAX_RETRY_COUNT = 3 */ @SessionScope internal class EventSenderProcessorCoroutine @Inject constructor( - private val cryptoService: CryptoService, + private val cryptoStore: IMXCryptoStore, private val sessionParams: SessionParams, private val queuedTaskFactory: QueuedTaskFactory, private val taskExecutor: TaskExecutor, @@ -92,7 +92,8 @@ internal class EventSenderProcessorCoroutine @Inject constructor( } override fun postEvent(event: Event): Cancelable { - return postEvent(event, cryptoService.shouldEncryptInRoom(event.roomId)) + val shouldEncrypt = event.roomId?.let { cryptoStore.roomWasOnceEncrypted(it) } ?: false + return postEvent(event, shouldEncrypt) } override fun postEvent(event: Event, encrypt: Boolean): Cancelable {