Merge pull request #3109 from element-hq/feature/fga/fix_restore_session_no_network
Auth : fix restore session when there is no network.
This commit is contained in:
commit
a7a2b4727f
2 changed files with 18 additions and 6 deletions
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.impl
|
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.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.di.CacheDirectory
|
import io.element.android.libraries.di.CacheDirectory
|
||||||
import io.element.android.libraries.matrix.impl.analytics.UtdTracker
|
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) {
|
suspend fun create(sessionData: SessionData): RustMatrixClient = withContext(coroutineDispatchers.io) {
|
||||||
val client = getBaseClientBuilder(sessionData.sessionPath, sessionData.passphrase)
|
val client = getBaseClientBuilder(sessionData.sessionPath, sessionData.passphrase)
|
||||||
.serverNameOrHomeserverUrl(sessionData.homeserverUrl)
|
.homeserverUrl(sessionData.homeserverUrl)
|
||||||
.username(sessionData.userId)
|
.username(sessionData.userId)
|
||||||
.use { it.build() }
|
.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()
|
return ClientBuilder()
|
||||||
.sessionPath(sessionPath)
|
.sessionPath(sessionPath)
|
||||||
.passphrase(passphrase)
|
.passphrase(passphrase)
|
||||||
.slidingSyncProxy(AuthenticationConfig.SLIDING_SYNC_PROXY_URL)
|
.slidingSyncProxy(slidingSyncProxy)
|
||||||
.userAgent(userAgentProvider.provide())
|
.userAgent(userAgentProvider.provide())
|
||||||
.addRootCertificates(userCertificatesProvider.provides())
|
.addRootCertificates(userCertificatesProvider.provides())
|
||||||
.autoEnableBackups(true)
|
.autoEnableBackups(true)
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
package io.element.android.libraries.matrix.impl.auth
|
package io.element.android.libraries.matrix.impl.auth
|
||||||
|
|
||||||
import com.squareup.anvil.annotations.ContributesBinding
|
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.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.core.extensions.mapFailure
|
import io.element.android.libraries.core.extensions.mapFailure
|
||||||
import io.element.android.libraries.di.AppScope
|
import io.element.android.libraries.di.AppScope
|
||||||
|
|
@ -205,7 +206,11 @@ class RustMatrixAuthenticationService @Inject constructor(
|
||||||
override suspend fun loginWithQrCode(qrCodeData: MatrixQrCodeLoginData, progress: (QrCodeLoginStep) -> Unit) =
|
override suspend fun loginWithQrCode(qrCodeData: MatrixQrCodeLoginData, progress: (QrCodeLoginStep) -> Unit) =
|
||||||
withContext(coroutineDispatchers.io) {
|
withContext(coroutineDispatchers.io) {
|
||||||
runCatching {
|
runCatching {
|
||||||
val client = rustMatrixClientFactory.getBaseClientBuilder(sessionPath, pendingPassphrase)
|
val client = rustMatrixClientFactory.getBaseClientBuilder(
|
||||||
|
sessionPath = sessionPath,
|
||||||
|
passphrase = pendingPassphrase,
|
||||||
|
slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL,
|
||||||
|
)
|
||||||
.buildWithQrCode(
|
.buildWithQrCode(
|
||||||
qrCodeData = (qrCodeData as SdkQrCodeLoginData).rustQrCodeData,
|
qrCodeData = (qrCodeData as SdkQrCodeLoginData).rustQrCodeData,
|
||||||
oidcConfiguration = oidcConfigurationProvider.get(),
|
oidcConfiguration = oidcConfigurationProvider.get(),
|
||||||
|
|
@ -242,7 +247,11 @@ class RustMatrixAuthenticationService @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getBaseClientBuilder() = rustMatrixClientFactory
|
private fun getBaseClientBuilder() = rustMatrixClientFactory
|
||||||
.getBaseClientBuilder(sessionPath, pendingPassphrase)
|
.getBaseClientBuilder(
|
||||||
|
sessionPath = sessionPath,
|
||||||
|
passphrase = pendingPassphrase,
|
||||||
|
slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL,
|
||||||
|
)
|
||||||
.requiresSlidingSync()
|
.requiresSlidingSync()
|
||||||
|
|
||||||
private fun clear() {
|
private fun clear() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue