feat: use the raw homeserver URL instead of manually removing the scheme

On the one hand, the SDK knows what to do and will clean up the URL if needs be,
guessing what the best scheme (http or https) is based on the prefix. On the other
hand, trimming the scheme as done here doesn't allow for manual testing on insecure
servers, which is handy in e2e testing situations.
This commit is contained in:
Benjamin Bouvier
2023-09-19 18:46:21 +02:00
parent 2757b5b13d
commit 4902fe4990
3 changed files with 3 additions and 8 deletions

1
changelog.d/1382.feature Normal file
View File

@@ -0,0 +1 @@
Let the SDK figure the best scheme given an homeserver URL (thus allowing HTTP homeservers)

View File

@@ -27,11 +27,9 @@ import io.element.android.features.login.impl.error.ChangeServerError
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.architecture.runCatchingUpdatingState
import io.element.android.libraries.core.data.tryOrNull
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import java.net.URL
import javax.inject.Inject
class ChangeServerPresenter @Inject constructor(
@@ -65,8 +63,7 @@ class ChangeServerPresenter @Inject constructor(
changeServerAction: MutableState<Async<Unit>>,
) = launch {
suspend {
val domain = tryOrNull { URL(data.title) }?.host ?: data.title
authenticationService.setHomeserver(domain).map {
authenticationService.setHomeserver(data.title).map {
authenticationService.getHomeserverDetails().value!!
// Valid, remember user choice
accountProviderDataSource.userSelection(data)

View File

@@ -35,11 +35,9 @@ import io.element.android.features.login.impl.oidc.customtab.DefaultOidcActionFl
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.architecture.runCatchingUpdatingState
import io.element.android.libraries.core.data.tryOrNull
import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import java.net.URL
class ConfirmAccountProviderPresenter @AssistedInject constructor(
@Assisted private val params: Params,
@@ -97,8 +95,7 @@ class ConfirmAccountProviderPresenter @AssistedInject constructor(
loginFlowAction: MutableState<Async<LoginFlow>>,
) = launch {
suspend {
val domain = tryOrNull { URL(homeserverUrl) }?.host ?: homeserverUrl
authenticationService.setHomeserver(domain).map {
authenticationService.setHomeserver(homeserverUrl).map {
val matrixHomeServerDetails = authenticationService.getHomeserverDetails().value!!
if (matrixHomeServerDetails.supportsOidcLogin) {
// Retrieve the details right now