SSS : enhance getBaseClientBuilder to avoid mistakes.
This commit is contained in:
parent
b974032e64
commit
4f86e21e8d
2 changed files with 27 additions and 4 deletions
|
|
@ -54,7 +54,11 @@ class RustMatrixClientFactory @Inject constructor(
|
||||||
val client = getBaseClientBuilder(
|
val client = getBaseClientBuilder(
|
||||||
sessionPath = sessionData.sessionPath,
|
sessionPath = sessionData.sessionPath,
|
||||||
passphrase = sessionData.passphrase,
|
passphrase = sessionData.passphrase,
|
||||||
useSimplifiedSlidingSync = appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first(),
|
slidingSync = if (appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()) {
|
||||||
|
ClientBuilderSlidingSync.Simplified
|
||||||
|
} else {
|
||||||
|
ClientBuilderSlidingSync.Restored
|
||||||
|
},
|
||||||
)
|
)
|
||||||
.homeserverUrl(sessionData.homeserverUrl)
|
.homeserverUrl(sessionData.homeserverUrl)
|
||||||
.username(sessionData.userId)
|
.username(sessionData.userId)
|
||||||
|
|
@ -86,7 +90,7 @@ class RustMatrixClientFactory @Inject constructor(
|
||||||
sessionPath: String,
|
sessionPath: String,
|
||||||
passphrase: String?,
|
passphrase: String?,
|
||||||
slidingSyncProxy: String? = null,
|
slidingSyncProxy: String? = null,
|
||||||
useSimplifiedSlidingSync: Boolean = false,
|
slidingSync: ClientBuilderSlidingSync,
|
||||||
): ClientBuilder {
|
): ClientBuilder {
|
||||||
return ClientBuilder()
|
return ClientBuilder()
|
||||||
.sessionPath(sessionPath)
|
.sessionPath(sessionPath)
|
||||||
|
|
@ -96,7 +100,13 @@ class RustMatrixClientFactory @Inject constructor(
|
||||||
.addRootCertificates(userCertificatesProvider.provides())
|
.addRootCertificates(userCertificatesProvider.provides())
|
||||||
.autoEnableBackups(true)
|
.autoEnableBackups(true)
|
||||||
.autoEnableCrossSigning(true)
|
.autoEnableCrossSigning(true)
|
||||||
.simplifiedSlidingSync(useSimplifiedSlidingSync)
|
.run {
|
||||||
|
when (slidingSync) {
|
||||||
|
ClientBuilderSlidingSync.Restored -> this
|
||||||
|
ClientBuilderSlidingSync.Discovered -> requiresSlidingSync()
|
||||||
|
ClientBuilderSlidingSync.Simplified -> simplifiedSlidingSync(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
.run {
|
.run {
|
||||||
// Workaround for non-nullable proxy parameter in the SDK, since each call to the ClientBuilder returns a new reference we need to keep
|
// Workaround for non-nullable proxy parameter in the SDK, since each call to the ClientBuilder returns a new reference we need to keep
|
||||||
proxyProvider.provides()?.let { proxy(it) } ?: this
|
proxyProvider.provides()?.let { proxy(it) } ?: this
|
||||||
|
|
@ -104,6 +114,17 @@ class RustMatrixClientFactory @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum class ClientBuilderSlidingSync {
|
||||||
|
// The proxy will be supplied when restoring the Session.
|
||||||
|
Restored,
|
||||||
|
|
||||||
|
// A proxy must be discovered whilst building the session.
|
||||||
|
Discovered,
|
||||||
|
|
||||||
|
// Use Simplified Sliding Sync (discovery isn't a thing yet).
|
||||||
|
Simplified,
|
||||||
|
}
|
||||||
|
|
||||||
private fun SessionData.toSession() = Session(
|
private fun SessionData.toSession() = Session(
|
||||||
accessToken = accessToken,
|
accessToken = accessToken,
|
||||||
refreshToken = refreshToken,
|
refreshToken = refreshToken,
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ import io.element.android.libraries.matrix.api.auth.OidcDetails
|
||||||
import io.element.android.libraries.matrix.api.auth.qrlogin.MatrixQrCodeLoginData
|
import io.element.android.libraries.matrix.api.auth.qrlogin.MatrixQrCodeLoginData
|
||||||
import io.element.android.libraries.matrix.api.auth.qrlogin.QrCodeLoginStep
|
import io.element.android.libraries.matrix.api.auth.qrlogin.QrCodeLoginStep
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
|
import io.element.android.libraries.matrix.impl.ClientBuilderSlidingSync
|
||||||
import io.element.android.libraries.matrix.impl.RustMatrixClientFactory
|
import io.element.android.libraries.matrix.impl.RustMatrixClientFactory
|
||||||
import io.element.android.libraries.matrix.impl.auth.qrlogin.QrErrorMapper
|
import io.element.android.libraries.matrix.impl.auth.qrlogin.QrErrorMapper
|
||||||
import io.element.android.libraries.matrix.impl.auth.qrlogin.SdkQrCodeLoginData
|
import io.element.android.libraries.matrix.impl.auth.qrlogin.SdkQrCodeLoginData
|
||||||
|
|
@ -210,6 +211,7 @@ class RustMatrixAuthenticationService @Inject constructor(
|
||||||
sessionPath = sessionPath,
|
sessionPath = sessionPath,
|
||||||
passphrase = pendingPassphrase,
|
passphrase = pendingPassphrase,
|
||||||
slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL,
|
slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL,
|
||||||
|
slidingSync = ClientBuilderSlidingSync.Discovered,
|
||||||
)
|
)
|
||||||
.buildWithQrCode(
|
.buildWithQrCode(
|
||||||
qrCodeData = (qrCodeData as SdkQrCodeLoginData).rustQrCodeData,
|
qrCodeData = (qrCodeData as SdkQrCodeLoginData).rustQrCodeData,
|
||||||
|
|
@ -251,8 +253,8 @@ class RustMatrixAuthenticationService @Inject constructor(
|
||||||
sessionPath = sessionPath,
|
sessionPath = sessionPath,
|
||||||
passphrase = pendingPassphrase,
|
passphrase = pendingPassphrase,
|
||||||
slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL,
|
slidingSyncProxy = AuthenticationConfig.SLIDING_SYNC_PROXY_URL,
|
||||||
|
slidingSync = ClientBuilderSlidingSync.Discovered,
|
||||||
)
|
)
|
||||||
.requiresSlidingSync()
|
|
||||||
|
|
||||||
private fun clear() {
|
private fun clear() {
|
||||||
currentClient?.close()
|
currentClient?.close()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue