diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b2cca061c7..d6f8d90c9d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -176,7 +176,7 @@ jsoup = "org.jsoup:jsoup:1.21.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.1.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.7.10" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.7.15" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } 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 506abcf5da..a66c80c691 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 @@ -43,7 +43,6 @@ import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.ClientBuilder import org.matrix.rustcomponents.sdk.HumanQrLoginException -import org.matrix.rustcomponents.sdk.OidcConfiguration import org.matrix.rustcomponents.sdk.QrCodeData import org.matrix.rustcomponents.sdk.QrCodeDecodeException import org.matrix.rustcomponents.sdk.QrLoginProgress @@ -199,6 +198,8 @@ class RustMatrixAuthenticationService @Inject constructor( oidcConfiguration = oidcConfigurationProvider.get(), prompt = prompt.toRustPrompt(), loginHint = loginHint, + // If we want to restore a previous session for which we have encryption keys, we can pass the deviceId here. At the moment, we don't + deviceId = null, ) val url = oAuthAuthorizationData.loginUrl() pendingOAuthAuthorizationData = oAuthAuthorizationData @@ -274,9 +275,13 @@ class RustMatrixAuthenticationService @Inject constructor( sessionPaths = emptySessionPaths, passphrase = pendingPassphrase, qrCodeData = sdkQrCodeLoginData, + ) + client.loginWithQrCode( + qrCodeData = qrCodeData.rustQrCodeData, oidcConfiguration = oidcConfiguration, progressListener = progressListener, ) + val sessionData = client.session() .toSessionData( isTokenValid = true, @@ -324,8 +329,6 @@ class RustMatrixAuthenticationService @Inject constructor( sessionPaths: SessionPaths, passphrase: String?, qrCodeData: QrCodeData, - oidcConfiguration: OidcConfiguration, - progressListener: QrLoginProgressListener, ): Client { Timber.d("Creating client for QR Code login with simplified sliding sync") return rustMatrixClientFactory @@ -335,7 +338,8 @@ class RustMatrixAuthenticationService @Inject constructor( slidingSyncType = ClientBuilderSlidingSync.Discovered, ) .sessionPassphrase(passphrase) - .buildWithQrCode(qrCodeData, oidcConfiguration, progressListener) + .serverNameOrHomeserverUrl(qrCodeData.serverName()!!) + .build() } private fun clear() { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt index 3ddb8c2cee..911219cac3 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeFfiClientBuilder.kt @@ -11,9 +11,6 @@ import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.ClientBuilder import org.matrix.rustcomponents.sdk.ClientSessionDelegate import org.matrix.rustcomponents.sdk.NoPointer -import org.matrix.rustcomponents.sdk.OidcConfiguration -import org.matrix.rustcomponents.sdk.QrCodeData -import org.matrix.rustcomponents.sdk.QrLoginProgressListener import org.matrix.rustcomponents.sdk.RequestConfig import org.matrix.rustcomponents.sdk.SlidingSyncVersionBuilder import uniffi.matrix_sdk.BackupDownloadStrategy @@ -43,10 +40,6 @@ class FakeFfiClientBuilder : ClientBuilder(NoPointer) { override fun username(username: String) = this override fun enableShareHistoryOnInvite(enableShareHistoryOnInvite: Boolean): ClientBuilder = this - override suspend fun buildWithQrCode(qrCodeData: QrCodeData, oidcConfiguration: OidcConfiguration, progressListener: QrLoginProgressListener): Client { - return FakeFfiClient() - } - override suspend fun build(): Client { return FakeFfiClient(withUtdHook = {}) }