From 1246bfa21e4e876a4f93962c3a0c6417d92b79cf Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 24 Nov 2025 20:22:11 +0100 Subject: [PATCH] deps(sdk) : add fallbackToServer on userIdentity api. --- .../matrix/api/encryption/EncryptionService.kt | 6 +++--- .../matrix/impl/encryption/RustEncryptionService.kt | 12 ++++-------- .../matrix/test/encryption/FakeEncryptionService.kt | 7 +------ 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt index 4ae75774c1..aefad517dc 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/encryption/EncryptionService.kt @@ -64,8 +64,6 @@ interface EncryptionService { */ suspend fun startIdentityReset(): Result - suspend fun isUserVerified(userId: UserId): Result - /** * Remember this identity, ensuring it does not result in a pin violation. */ @@ -82,8 +80,10 @@ interface EncryptionService { /** * Get the identity state of a user, if known. + * @param userId the user id to get the identity for. + * @param fallbackToServer whether to fallback to fetching the identity from the server if not known locally. Defaults to true. */ - suspend fun getUserIdentity(userId: UserId): Result + suspend fun getUserIdentity(userId: UserId, fallbackToServer: Boolean = true): Result } /** diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt index 6ebf80337c..e081d1c9f1 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/RustEncryptionService.kt @@ -240,10 +240,6 @@ class RustEncryptionService( } } - override suspend fun isUserVerified(userId: UserId): Result = runCatchingExceptions { - getUserIdentityInternal(userId).isVerified() - } - override suspend fun pinUserIdentity(userId: UserId): Result = runCatchingExceptions { getUserIdentityInternal(userId).pin() } @@ -252,8 +248,8 @@ class RustEncryptionService( getUserIdentityInternal(userId).withdrawVerification() } - override suspend fun getUserIdentity(userId: UserId): Result = runCatchingExceptions { - val identity = getUserIdentityInternal(userId) + override suspend fun getUserIdentity(userId: UserId, fallbackToServer: Boolean): Result = runCatchingExceptions { + val identity = getUserIdentityInternal(userId, fallbackToServer) val isVerified = identity.isVerified() when { identity.hasVerificationViolation() -> IdentityState.VerificationViolation @@ -263,10 +259,10 @@ class RustEncryptionService( } } - suspend fun getUserIdentityInternal(userId: UserId): UserIdentity { + private suspend fun getUserIdentityInternal(userId: UserId, fallbackToServer: Boolean = true): UserIdentity { return service.userIdentity( userId = userId.value, - // requestFromHomeserverIfNeeded = true, + fallbackToServer = fallbackToServer, ) ?: error("User identity not found") } diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt index a94de15f1e..04e3779298 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/encryption/FakeEncryptionService.kt @@ -26,7 +26,6 @@ import kotlinx.coroutines.flow.flowOf class FakeEncryptionService( var startIdentityResetLambda: () -> Result = { lambdaError() }, private val pinUserIdentityResult: (UserId) -> Result = { lambdaError() }, - private val isUserVerifiedResult: (UserId) -> Result = { lambdaError() }, private val withdrawVerificationResult: (UserId) -> Result = { lambdaError() }, private val getUserIdentityResult: (UserId) -> Result = { lambdaError() }, private val enableRecoveryLambda: (Boolean) -> Result = { lambdaError() }, @@ -139,11 +138,7 @@ class FakeEncryptionService( return withdrawVerificationResult(userId) } - override suspend fun isUserVerified(userId: UserId): Result = simulateLongTask { - isUserVerifiedResult(userId) - } - - override suspend fun getUserIdentity(userId: UserId): Result = simulateLongTask { + override suspend fun getUserIdentity(userId: UserId, fallbackToServer: Boolean): Result = simulateLongTask { return getUserIdentityResult(userId) }