mirror of
https://github.com/element-hq/element-android
synced 2024-10-23 19:26:42 +03:00
Fix another issue when there is no name and no canonical alias on a public room
This commit is contained in:
parent
eec65fb622
commit
b72698d63c
4 changed files with 21 additions and 16 deletions
|
@ -23,66 +23,71 @@ import com.squareup.moshi.JsonClass
|
||||||
*/
|
*/
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class PublicRoom(
|
data class PublicRoom(
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aliases of the room. May be empty.
|
* Aliases of the room. May be empty.
|
||||||
*/
|
*/
|
||||||
@Json(name = "aliases")
|
@Json(name = "aliases")
|
||||||
var aliases: List<String>? = null,
|
val aliases: List<String>? = null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The canonical alias of the room, if any.
|
* The canonical alias of the room, if any.
|
||||||
*/
|
*/
|
||||||
@Json(name = "canonical_alias")
|
@Json(name = "canonical_alias")
|
||||||
var canonicalAlias: String? = null,
|
val canonicalAlias: String? = null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the room, if any.
|
* The name of the room, if any.
|
||||||
*/
|
*/
|
||||||
@Json(name = "name")
|
@Json(name = "name")
|
||||||
var name: String? = null,
|
val name: String? = null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Required. The number of members joined to the room.
|
* Required. The number of members joined to the room.
|
||||||
*/
|
*/
|
||||||
@Json(name = "num_joined_members")
|
@Json(name = "num_joined_members")
|
||||||
var numJoinedMembers: Int = 0,
|
val numJoinedMembers: Int = 0,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Required. The ID of the room.
|
* Required. The ID of the room.
|
||||||
*/
|
*/
|
||||||
@Json(name = "room_id")
|
@Json(name = "room_id")
|
||||||
var roomId: String,
|
val roomId: String,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The topic of the room, if any.
|
* The topic of the room, if any.
|
||||||
*/
|
*/
|
||||||
@Json(name = "topic")
|
@Json(name = "topic")
|
||||||
var topic: String? = null,
|
val topic: String? = null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Required. Whether the room may be viewed by guest users without joining.
|
* Required. Whether the room may be viewed by guest users without joining.
|
||||||
*/
|
*/
|
||||||
@Json(name = "world_readable")
|
@Json(name = "world_readable")
|
||||||
var worldReadable: Boolean = false,
|
val worldReadable: Boolean = false,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Required. Whether guest users may join the room and participate in it. If they can,
|
* Required. Whether guest users may join the room and participate in it. If they can,
|
||||||
* they will be subject to ordinary power level rules like any other user.
|
* they will be subject to ordinary power level rules like any other user.
|
||||||
*/
|
*/
|
||||||
@Json(name = "guest_can_join")
|
@Json(name = "guest_can_join")
|
||||||
var guestCanJoin: Boolean = false,
|
val guestCanJoin: Boolean = false,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The URL for the room's avatar, if one is set.
|
* The URL for the room's avatar, if one is set.
|
||||||
*/
|
*/
|
||||||
@Json(name = "avatar_url")
|
@Json(name = "avatar_url")
|
||||||
var avatarUrl: String? = null,
|
val avatarUrl: String? = null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Undocumented item
|
* Undocumented item
|
||||||
*/
|
*/
|
||||||
@Json(name = "m.federate")
|
@Json(name = "m.federate")
|
||||||
var isFederated: Boolean = false
|
val isFederated: Boolean = false
|
||||||
|
) {
|
||||||
)
|
/**
|
||||||
|
* Return the canonical alias, or the first alias from the list of alias, or null
|
||||||
|
*/
|
||||||
|
fun getPrimaryAlias(): String? {
|
||||||
|
return canonicalAlias ?: aliases?.firstOrNull()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -151,6 +151,6 @@ fun RoomSummary.toMatrixItem() = MatrixItem.RoomItem(roomId, displayName, avatar
|
||||||
fun RoomSummary.toRoomAliasMatrixItem() = MatrixItem.RoomAliasItem(canonicalAlias ?: roomId, displayName, avatarUrl)
|
fun RoomSummary.toRoomAliasMatrixItem() = MatrixItem.RoomAliasItem(canonicalAlias ?: roomId, displayName, avatarUrl)
|
||||||
|
|
||||||
// If no name is available, use room alias as Riot-Web does
|
// If no name is available, use room alias as Riot-Web does
|
||||||
fun PublicRoom.toMatrixItem() = MatrixItem.RoomItem(roomId, name ?: canonicalAlias, avatarUrl)
|
fun PublicRoom.toMatrixItem() = MatrixItem.RoomItem(roomId, name ?: getPrimaryAlias() ?: "", avatarUrl)
|
||||||
|
|
||||||
fun RoomMemberSummary.toMatrixItem() = MatrixItem.UserItem(userId, displayName, avatarUrl)
|
fun RoomMemberSummary.toMatrixItem() = MatrixItem.UserItem(userId, displayName, avatarUrl)
|
||||||
|
|
|
@ -242,7 +242,7 @@ class EllipsizingTextView @JvmOverloads constructor(context: Context, attrs: Att
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
protected fun createWorkingLayout(workingText: CharSequence?): Layout {
|
protected fun createWorkingLayout(workingText: CharSequence?): Layout {
|
||||||
return StaticLayout(
|
return StaticLayout(
|
||||||
workingText,
|
workingText ?: "",
|
||||||
paint,
|
paint,
|
||||||
width - compoundPaddingLeft - compoundPaddingRight,
|
width - compoundPaddingLeft - compoundPaddingRight,
|
||||||
Layout.Alignment.ALIGN_NORMAL,
|
Layout.Alignment.ALIGN_NORMAL,
|
||||||
|
|
|
@ -85,7 +85,7 @@ class PublicRoomsController @Inject constructor(private val stringProvider: Stri
|
||||||
avatarRenderer(avatarRenderer)
|
avatarRenderer(avatarRenderer)
|
||||||
id(publicRoom.roomId)
|
id(publicRoom.roomId)
|
||||||
matrixItem(publicRoom.toMatrixItem())
|
matrixItem(publicRoom.toMatrixItem())
|
||||||
roomAlias(publicRoom.canonicalAlias)
|
roomAlias(publicRoom.getPrimaryAlias())
|
||||||
roomTopic(publicRoom.topic)
|
roomTopic(publicRoom.topic)
|
||||||
nbOfMembers(publicRoom.numJoinedMembers)
|
nbOfMembers(publicRoom.numJoinedMembers)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue