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:
1
changelog.d/1382.feature
Normal file
1
changelog.d/1382.feature
Normal file
@@ -0,0 +1 @@
|
||||
Let the SDK figure the best scheme given an homeserver URL (thus allowing HTTP homeservers)
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user