Do not render roomId if the room has no canonical alias #1970

This commit is contained in:
Benoit Marty 2023-12-19 13:40:52 +01:00
parent aa077baacd
commit e150c359e9
2 changed files with 21 additions and 16 deletions

View file

@ -17,12 +17,12 @@
package io.element.android.libraries.roomselect.impl package io.element.android.libraries.roomselect.impl
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.roomselect.api.RoomSelectMode
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMember
import io.element.android.libraries.matrix.api.room.message.RoomMessage import io.element.android.libraries.matrix.api.room.message.RoomMessage
import io.element.android.libraries.matrix.api.roomlist.RoomSummaryDetails import io.element.android.libraries.matrix.api.roomlist.RoomSummaryDetails
import io.element.android.libraries.roomselect.api.RoomSelectMode
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentListOf
@ -47,7 +47,7 @@ open class RoomSelectStateProvider : PreviewParameterProvider<RoomSelectState> {
) )
} }
fun aRoomSelectState( private fun aRoomSelectState(
resultState: SearchBarResultState<ImmutableList<RoomSummaryDetails>> = SearchBarResultState.NotSearching(), resultState: SearchBarResultState<ImmutableList<RoomSummaryDetails>> = SearchBarResultState.NotSearching(),
query: String = "", query: String = "",
isSearchActive: Boolean = false, isSearchActive: Boolean = false,
@ -61,12 +61,16 @@ fun aRoomSelectState(
eventSink = {} eventSink = {}
) )
internal fun aForwardMessagesRoomList() = persistentListOf( private fun aForwardMessagesRoomList() = persistentListOf(
aRoomDetailsState(), aRoomDetailsState(),
aRoomDetailsState(roomId = RoomId("!room2:domain"), canonicalAlias = "#element-x-room:matrix.org"), aRoomDetailsState(
roomId = RoomId("!room2:domain"),
name = "Room with alias",
canonicalAlias = "#alias:example.org",
),
) )
fun aRoomDetailsState( private fun aRoomDetailsState(
roomId: RoomId = RoomId("!room:domain"), roomId: RoomId = RoomId("!room:domain"),
name: String = "roomName", name: String = "roomName",
canonicalAlias: String? = null, canonicalAlias: String? = null,

View file

@ -41,7 +41,6 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.roomselect.api.RoomSelectMode
import io.element.android.libraries.designsystem.components.avatar.Avatar import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData import io.element.android.libraries.designsystem.components.avatar.AvatarData
import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.avatar.AvatarSize
@ -62,6 +61,7 @@ import io.element.android.libraries.designsystem.theme.roomListRoomName
import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.roomlist.RoomSummaryDetails import io.element.android.libraries.matrix.api.roomlist.RoomSummaryDetails
import io.element.android.libraries.matrix.ui.components.SelectedRoom import io.element.android.libraries.matrix.ui.components.SelectedRoom
import io.element.android.libraries.roomselect.api.RoomSelectMode
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
@ -221,10 +221,9 @@ private fun RoomSummaryView(
.heightIn(56.dp), .heightIn(56.dp),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
val roomAlias = summary.canonicalAlias ?: summary.roomId.value
Avatar( Avatar(
avatarData = AvatarData( avatarData = AvatarData(
id = roomAlias, id = summary.roomId.value,
name = summary.name, name = summary.name,
url = summary.avatarURLString, url = summary.avatarURLString,
size = AvatarSize.ForwardRoomListItem, size = AvatarSize.ForwardRoomListItem,
@ -243,14 +242,16 @@ private fun RoomSummaryView(
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
// Id // Alias
Text( summary.canonicalAlias?.let { alias ->
text = roomAlias, Text(
color = MaterialTheme.roomListRoomMessage(), text = alias,
style = ElementTheme.typography.fontBodySmRegular, color = MaterialTheme.roomListRoomMessage(),
maxLines = 1, style = ElementTheme.typography.fontBodySmRegular,
overflow = TextOverflow.Ellipsis maxLines = 1,
) overflow = TextOverflow.Ellipsis
)
}
} }
RadioButton(selected = isSelected, onClick = { onSelection(summary) }) RadioButton(selected = isSelected, onClick = { onSelection(summary) })
} }