Join room: clean up after benoit's remarks
This commit is contained in:
parent
b39a86edbd
commit
28a1cf6982
@ -18,11 +18,8 @@
|
||||
package org.matrix.android.sdk.api.session.permalinks
|
||||
|
||||
import android.net.Uri
|
||||
import android.net.UrlQuerySanitizer
|
||||
import org.matrix.android.sdk.api.MatrixPatterns
|
||||
import java.io.UnsupportedEncodingException
|
||||
import java.net.URLEncoder
|
||||
import java.util.ArrayList
|
||||
import java.util.Collections
|
||||
|
||||
/**
|
||||
* This class turns an uri to a [PermalinkData]
|
||||
@ -50,7 +47,7 @@ object PermalinkParser {
|
||||
}
|
||||
val indexOfQuery = fragment.indexOf("?")
|
||||
val safeFragment = if (indexOfQuery != -1) fragment.substring(0, indexOfQuery) else fragment
|
||||
val viaQueryParameters = fragment.getViaParameters(indexOfQuery)
|
||||
val viaQueryParameters = fragment.getViaParameters()
|
||||
|
||||
// we are limiting to 2 params
|
||||
val params = safeFragment
|
||||
@ -84,42 +81,13 @@ object PermalinkParser {
|
||||
}
|
||||
}
|
||||
|
||||
private fun String.getViaParameters(indexOfQuery: Int): List<String> {
|
||||
val query = try {
|
||||
substring(indexOfQuery + 1)
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
return emptyList()
|
||||
}
|
||||
val encodedKey = try {
|
||||
URLEncoder.encode("via", "UTF-8")
|
||||
} catch (e: UnsupportedEncodingException) {
|
||||
return emptyList()
|
||||
}
|
||||
val values = ArrayList<String>()
|
||||
var start = 0
|
||||
do {
|
||||
val nextAmpersand = query.indexOf('&', start)
|
||||
val end = if (nextAmpersand != -1) nextAmpersand else query.length
|
||||
var separator = query.indexOf('=', start)
|
||||
if (separator > end || separator == -1) {
|
||||
separator = end
|
||||
}
|
||||
if (separator - start == encodedKey.length
|
||||
&& query.regionMatches(start, encodedKey, 0, encodedKey.length)) {
|
||||
if (separator == end) {
|
||||
values.add("")
|
||||
} else {
|
||||
values.add(Uri.decode(query.substring(separator + 1, end)))
|
||||
private fun String.getViaParameters(): List<String> {
|
||||
return UrlQuerySanitizer(this)
|
||||
.parameterList
|
||||
.filter {
|
||||
it.mParameter == "via"
|
||||
}.map {
|
||||
it.mValue
|
||||
}
|
||||
}
|
||||
|
||||
// Move start to end of name.
|
||||
start = if (nextAmpersand != -1) {
|
||||
nextAmpersand + 1
|
||||
} else {
|
||||
break
|
||||
}
|
||||
} while (true)
|
||||
return Collections.unmodifiableList(values)
|
||||
}
|
||||
}
|
||||
|
@ -139,13 +139,15 @@ class PermalinkHandler @Inject constructor(private val activeSessionHolder: Acti
|
||||
return
|
||||
}
|
||||
val roomSummary = session.getRoomSummary(roomId)
|
||||
val membership = roomSummary?.membership
|
||||
val eventId = permalinkData.eventId
|
||||
val roomAlias = permalinkData.getRoomAliasOrNull()
|
||||
return when {
|
||||
roomSummary?.membership?.isActive().orFalse() -> {
|
||||
membership == Membership.BAN -> context.toast(R.string.error_opening_banned_room)
|
||||
membership?.isActive().orFalse() -> {
|
||||
navigator.openRoom(context, roomId, eventId, buildTask)
|
||||
}
|
||||
roomSummary?.membership != Membership.BAN -> {
|
||||
else -> {
|
||||
val roomPreviewData = RoomPreviewData(
|
||||
roomId = roomId,
|
||||
eventId = eventId,
|
||||
@ -157,9 +159,6 @@ class PermalinkHandler @Inject constructor(private val activeSessionHolder: Acti
|
||||
)
|
||||
navigator.openRoomPreview(context, roomPreviewData)
|
||||
}
|
||||
else -> {
|
||||
context.toast(R.string.error_opening_banned_room)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ class PublicRoomsController @Inject constructor(private val stringProvider: Stri
|
||||
return roomItem?.let {
|
||||
UnknownRoomItem_().apply {
|
||||
id(roomIdOrAlias)
|
||||
matrixItem(roomItem)
|
||||
matrixItem(it)
|
||||
avatarRenderer(this@PublicRoomsController.avatarRenderer)
|
||||
globalListener {
|
||||
callback?.onUnknownRoomClicked(roomIdOrAlias)
|
||||
|
@ -36,9 +36,6 @@ abstract class UnknownRoomItem : VectorEpoxyModel<UnknownRoomItem.Holder>() {
|
||||
@EpoxyAttribute
|
||||
lateinit var matrixItem: MatrixItem
|
||||
|
||||
@EpoxyAttribute
|
||||
var identifier: String? = null
|
||||
|
||||
@EpoxyAttribute
|
||||
var globalListener: (() -> Unit)? = null
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user