Add tests.
This commit is contained in:
parent
319d74b12b
commit
563f8d3403
7 changed files with 180 additions and 77 deletions
|
|
@ -49,10 +49,11 @@ class DefaultHomeserverResolver @Inject constructor(
|
|||
emit(Async.Uninitialized)
|
||||
// Debounce
|
||||
delay(300)
|
||||
val clean = userInput.trim()
|
||||
if (clean.length < 4) return@flow
|
||||
val trimmedUserInput = userInput.trim()
|
||||
if (trimmedUserInput.length < 4) return@flow
|
||||
emit(Async.Loading())
|
||||
val list = getUrlCandidate(clean.ensureProtocol().removeSuffix("/"))
|
||||
val candidateBase = trimmedUserInput.ensureProtocol().removeSuffix("/")
|
||||
val list = getUrlCandidates(candidateBase)
|
||||
val currentList = Collections.synchronizedList(mutableListOf<HomeserverData>())
|
||||
// Run all the requests in parallel
|
||||
withContext(dispatchers.io) {
|
||||
|
|
@ -77,14 +78,14 @@ class DefaultHomeserverResolver @Inject constructor(
|
|||
}
|
||||
}.awaitAll()
|
||||
}
|
||||
// If list is empty, and the user as entered an URL, do not block the user.
|
||||
// If list is empty, and the user has entered an URL, do not block the user.
|
||||
if (currentList.isEmpty()) {
|
||||
if (userInput.isValidUrl()) {
|
||||
if (trimmedUserInput.isValidUrl()) {
|
||||
emit(
|
||||
Async.Success(
|
||||
listOf(
|
||||
HomeserverData(
|
||||
homeserverUrl = userInput,
|
||||
homeserverUrl = trimmedUserInput,
|
||||
isWellknownValid = false,
|
||||
supportSlidingSync = false,
|
||||
)
|
||||
|
|
@ -97,7 +98,7 @@ class DefaultHomeserverResolver @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun getUrlCandidate(data: String): List<String> {
|
||||
private fun getUrlCandidates(data: String): List<String> {
|
||||
return buildList {
|
||||
if (data.contains(".")) {
|
||||
// TLD detected?
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Copyright (c) 2023 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package io.element.android.features.login.impl.changeaccountprovider.form.network
|
||||
|
||||
import com.squareup.anvil.annotations.ContributesBinding
|
||||
import io.element.android.libraries.di.AppScope
|
||||
import io.element.android.libraries.network.RetrofitFactory
|
||||
import javax.inject.Inject
|
||||
|
||||
@ContributesBinding(AppScope::class)
|
||||
class DefaultWellknownRequest @Inject constructor(
|
||||
private val retrofitFactory: RetrofitFactory,
|
||||
) : WellknownRequest {
|
||||
/**
|
||||
* Return the WellKnown data, if found.
|
||||
* @param baseUrl for instance https://matrix.org
|
||||
*/
|
||||
override suspend fun execute(baseUrl: String): WellKnown {
|
||||
val wellknownApi = retrofitFactory.create(baseUrl)
|
||||
.create(WellknownAPI::class.java)
|
||||
return wellknownApi.getWellKnown()
|
||||
}
|
||||
}
|
||||
|
|
@ -15,19 +15,10 @@
|
|||
*/
|
||||
package io.element.android.features.login.impl.changeaccountprovider.form.network
|
||||
|
||||
import io.element.android.libraries.network.RetrofitFactory
|
||||
import javax.inject.Inject
|
||||
|
||||
class WellknownRequest @Inject constructor(
|
||||
private val retrofitFactory: RetrofitFactory,
|
||||
) {
|
||||
interface WellknownRequest {
|
||||
/**
|
||||
* Return the WellKnown data, if found.
|
||||
* Return the WellKnown data, or throw an error if not found.
|
||||
* @param baseUrl for instance https://matrix.org
|
||||
*/
|
||||
suspend fun execute(baseUrl: String): WellKnown {
|
||||
val wellknownApi = retrofitFactory.create(baseUrl)
|
||||
.create(WellknownAPI::class.java)
|
||||
return wellknownApi.getWellKnown()
|
||||
}
|
||||
suspend fun execute(baseUrl: String): WellKnown
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue