mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-18 04:50:08 +03:00
Merge pull request #2074 from vector-im/feature/cleanup
Cleanup and documentation after #2047
This commit is contained in:
commit
135fcab558
2 changed files with 34 additions and 12 deletions
|
@ -30,6 +30,7 @@ import im.vector.app.features.login.LoginConfig
|
||||||
import im.vector.app.features.permalink.PermalinkHandler
|
import im.vector.app.features.permalink.PermalinkHandler
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import org.matrix.android.sdk.api.MatrixCallback
|
import org.matrix.android.sdk.api.MatrixCallback
|
||||||
|
import org.matrix.android.sdk.api.session.permalinks.PermalinkService
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -59,10 +60,14 @@ class LinkHandlerActivity : VectorBaseActivity() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uri.getQueryParameter(CONFIG_PATH_HS_PARAMETER) != null) {
|
if (uri.getQueryParameter(LoginConfig.CONFIG_HS_PARAMETER) != null) {
|
||||||
handleConfigUrl(uri)
|
handleConfigUrl(uri)
|
||||||
} else if (SUPPORTED_HOSTS.contains(uri.host)) {
|
} else if (SUPPORTED_HOSTS.contains(uri.host)) {
|
||||||
handleSupportedHostUrl(uri)
|
handleSupportedHostUrl(uri)
|
||||||
|
} else {
|
||||||
|
// Other links are not yet handled, but should not come here (manifest configuration error?)
|
||||||
|
toast(R.string.universal_link_malformed)
|
||||||
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,11 +95,16 @@ class LinkHandlerActivity : VectorBaseActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a URL of element web instance to a matrix.to url
|
||||||
|
* Examples:
|
||||||
|
* - https://riot.im/develop/#/room/#element-android:matrix.org -> https://matrix.to/#/#element-android:matrix.org
|
||||||
|
* - https://app.element.io/#/room/#element-android:matrix.org -> https://matrix.to/#/#element-android:matrix.org
|
||||||
|
*/
|
||||||
private fun convertUriToPermalink(uri: Uri): String? {
|
private fun convertUriToPermalink(uri: Uri): String? {
|
||||||
val path = SUPPORTED_PATHS.find { it in uri.toString() } ?: return null
|
val uriString = uri.toString()
|
||||||
// https://riot.im/develop/#/room/#element-android:matrix.org -> https://matrix.to/#/#element-android:matrix.org
|
val path = SUPPORTED_PATHS.find { it in uriString } ?: return null
|
||||||
// https://app.element.io/#/room/#element-android:matrix.org -> https://matrix.to/#/#element-android:matrix.org
|
return PermalinkService.MATRIX_TO_URL_BASE + uriString.substringAfter(path)
|
||||||
return "https://$MATRIX_TO_HOST/#" + uri.toString().substringAfter(path)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun startPermalinkHandler(permalink: String) {
|
private fun startPermalinkHandler(permalink: String) {
|
||||||
|
@ -155,10 +165,19 @@ class LinkHandlerActivity : VectorBaseActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val CONFIG_PATH_HS_PARAMETER = "hs_url"
|
private val SUPPORTED_HOSTS = listOf(
|
||||||
|
// Regular Element Web instance
|
||||||
private val SUPPORTED_HOSTS = arrayOf("app.element.io", "riot.im", "develop.element.io", "staging.element.io")
|
"app.element.io",
|
||||||
private val SUPPORTED_PATHS = arrayOf("/#/room", "/#/user", "/#/group")
|
// Other known instances of Element Web
|
||||||
private const val MATRIX_TO_HOST = "matrix.to"
|
"develop.element.io",
|
||||||
|
"staging.element.io",
|
||||||
|
// Previous Web instance, kept for compatibility reason
|
||||||
|
"riot.im"
|
||||||
|
)
|
||||||
|
private val SUPPORTED_PATHS = listOf(
|
||||||
|
"/#/room/",
|
||||||
|
"/#/user/",
|
||||||
|
"/#/group/"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,10 +33,13 @@ data class LoginConfig(
|
||||||
) : Parcelable {
|
) : Parcelable {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
const val CONFIG_HS_PARAMETER = "hs_url"
|
||||||
|
private const val CONFIG_IS_PARAMETER = "is_url"
|
||||||
|
|
||||||
fun parse(from: Uri): LoginConfig {
|
fun parse(from: Uri): LoginConfig {
|
||||||
return LoginConfig(
|
return LoginConfig(
|
||||||
homeServerUrl = from.getQueryParameter("hs_url"),
|
homeServerUrl = from.getQueryParameter(CONFIG_HS_PARAMETER),
|
||||||
identityServerUrl = from.getQueryParameter("is_url")
|
identityServerUrl = from.getQueryParameter(CONFIG_IS_PARAMETER)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue