From e9c995f96d3ec19a88f79dc0f6a15724ab2c1287 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 27 Jun 2024 18:05:47 +0200 Subject: [PATCH] Auth : fix restore session when there is no network. --- .../matrix/impl/RustMatrixClientFactory.kt | 11 +++++++---- .../impl/auth/RustMatrixAuthenticationService.kt | 13 +++++++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index eb8417234f..03d8680e4e 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -16,7 +16,6 @@ package io.element.android.libraries.matrix.impl -import io.element.android.appconfig.AuthenticationConfig import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.di.CacheDirectory import io.element.android.libraries.matrix.impl.analytics.UtdTracker @@ -48,7 +47,7 @@ class RustMatrixClientFactory @Inject constructor( ) { suspend fun create(sessionData: SessionData): RustMatrixClient = withContext(coroutineDispatchers.io) { val client = getBaseClientBuilder(sessionData.sessionPath, sessionData.passphrase) - .serverNameOrHomeserverUrl(sessionData.homeserverUrl) + .homeserverUrl(sessionData.homeserverUrl) .username(sessionData.userId) .use { it.build() } @@ -70,11 +69,15 @@ class RustMatrixClientFactory @Inject constructor( ) } - internal fun getBaseClientBuilder(sessionPath: String, passphrase: String?): ClientBuilder { + internal fun getBaseClientBuilder( + sessionPath: String, + passphrase: String?, + slidingSyncProxy: String? = null, + ): ClientBuilder { return ClientBuilder() .sessionPath(sessionPath) .passphrase(passphrase) - .slidingSyncProxy(AuthenticationConfig.SLIDING_SYNC_PROXY_URL) + .slidingSyncProxy(slidingSyncProxy) .userAgent(userAgentProvider.provide()) .addRootCertificates(userCertificatesProvider.provides()) .autoEnableBackups(true) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index a4100a1bcc..8c0546fa8b 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -17,6 +17,7 @@ package io.element.android.libraries.matrix.impl.auth import com.squareup.anvil.annotations.ContributesBinding +import io.element.android.appconfig.AuthenticationConfig import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.mapFailure import io.element.android.libraries.di.AppScope @@ -205,7 +206,11 @@ class RustMatrixAuthenticationService @Inject constructor( override suspend fun loginWithQrCode(qrCodeData: MatrixQrCodeLoginData, progress: (QrCodeLoginStep) -> Unit) = withContext(coroutineDispatchers.io) { runCatching { - val client = rustMatrixClientFactory.getBaseClientBuilder(sessionPath, pendingPassphrase) + val client = rustMatrixClientFactory.getBaseClientBuilder( + sessionPath = sessionPath, + passphrase = pendingPassphrase, + slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL, + ) .buildWithQrCode( qrCodeData = (qrCodeData as SdkQrCodeLoginData).rustQrCodeData, oidcConfiguration = oidcConfigurationProvider.get(), @@ -242,7 +247,11 @@ class RustMatrixAuthenticationService @Inject constructor( } private fun getBaseClientBuilder() = rustMatrixClientFactory - .getBaseClientBuilder(sessionPath, pendingPassphrase) + .getBaseClientBuilder( + sessionPath = sessionPath, + passphrase = pendingPassphrase, + slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL, + ) .requiresSlidingSync() private fun clear() {