Increase usage of RoomAlias
This commit is contained in:
parent
fe7dfcb09b
commit
a602849ec5
24 changed files with 60 additions and 38 deletions
|
|
@ -137,7 +137,7 @@ internal fun RoomDescription.toContentState(): ContentState {
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
internal fun MatrixRoomInfo.toContentState(): ContentState {
|
internal fun MatrixRoomInfo.toContentState(): ContentState {
|
||||||
return ContentState.Loaded(
|
return ContentState.Loaded(
|
||||||
roomId = RoomId(id),
|
roomId = id,
|
||||||
name = name,
|
name = name,
|
||||||
topic = topic,
|
topic = topic,
|
||||||
alias = canonicalAlias,
|
alias = canonicalAlias,
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import androidx.compose.runtime.Immutable
|
||||||
import io.element.android.features.invite.api.response.AcceptDeclineInviteState
|
import io.element.android.features.invite.api.response.AcceptDeclineInviteState
|
||||||
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
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
|
|
@ -41,7 +42,7 @@ sealed interface ContentState {
|
||||||
val roomId: RoomId,
|
val roomId: RoomId,
|
||||||
val name: String?,
|
val name: String?,
|
||||||
val topic: String?,
|
val topic: String?,
|
||||||
val alias: String?,
|
val alias: RoomAlias?,
|
||||||
val numberOfMembers: Long?,
|
val numberOfMembers: Long?,
|
||||||
val isDirect: Boolean,
|
val isDirect: Boolean,
|
||||||
val roomAvatarUrl: String?,
|
val roomAvatarUrl: String?,
|
||||||
|
|
@ -50,7 +51,7 @@ sealed interface ContentState {
|
||||||
val computedTitle = name ?: roomId.value
|
val computedTitle = name ?: roomId.value
|
||||||
|
|
||||||
val computedSubtitle = when {
|
val computedSubtitle = when {
|
||||||
alias != null -> alias
|
alias != null -> alias.value
|
||||||
name == null -> ""
|
name == null -> ""
|
||||||
else -> roomId.value
|
else -> roomId.value
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package io.element.android.features.joinroom.impl
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import io.element.android.features.invite.api.response.AcceptDeclineInviteState
|
import io.element.android.features.invite.api.response.AcceptDeclineInviteState
|
||||||
import io.element.android.features.invite.api.response.anAcceptDeclineInviteState
|
import io.element.android.features.invite.api.response.anAcceptDeclineInviteState
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
||||||
open class JoinRoomStateProvider : PreviewParameterProvider<JoinRoomState> {
|
open class JoinRoomStateProvider : PreviewParameterProvider<JoinRoomState> {
|
||||||
|
|
@ -49,7 +50,7 @@ fun aLoadingContentState(roomId: RoomId = A_ROOM_ID) = ContentState.Loading(room
|
||||||
fun aLoadedContentState(
|
fun aLoadedContentState(
|
||||||
roomId: RoomId = A_ROOM_ID,
|
roomId: RoomId = A_ROOM_ID,
|
||||||
name: String = "Element X android",
|
name: String = "Element X android",
|
||||||
alias: String? = "#exa:matrix.org",
|
alias: RoomAlias? = RoomAlias("#exa:matrix.org"),
|
||||||
topic: String? = "Element X is a secure, private and decentralized messenger.",
|
topic: String? = "Element X is a secure, private and decentralized messenger.",
|
||||||
numberOfMembers: Long? = null,
|
numberOfMembers: Long? = null,
|
||||||
isDirect: Boolean = false,
|
isDirect: Boolean = false,
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,7 @@ class MessagesPresenter @AssistedInject constructor(
|
||||||
|
|
||||||
private fun MatrixRoomInfo.avatarData(): AvatarData {
|
private fun MatrixRoomInfo.avatarData(): AvatarData {
|
||||||
return AvatarData(
|
return AvatarData(
|
||||||
id = id,
|
id = id.value,
|
||||||
name = name,
|
name = name,
|
||||||
url = avatarUrl ?: room.avatarUrl,
|
url = avatarUrl ?: room.avatarUrl,
|
||||||
size = AvatarSize.TimelineRoom
|
size = AvatarSize.TimelineRoom
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ class RoomDetailsPresenter @Inject constructor(
|
||||||
val roomMemberDetailsState = roomMemberDetailsPresenter?.present()
|
val roomMemberDetailsState = roomMemberDetailsPresenter?.present()
|
||||||
|
|
||||||
return RoomDetailsState(
|
return RoomDetailsState(
|
||||||
roomId = room.roomId.value,
|
roomId = room.roomId,
|
||||||
roomName = roomName,
|
roomName = roomName,
|
||||||
roomAlias = room.alias,
|
roomAlias = room.alias,
|
||||||
roomAvatarUrl = roomAvatar,
|
roomAvatarUrl = roomAvatar,
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,15 @@ package io.element.android.features.roomdetails.impl
|
||||||
|
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomState
|
import io.element.android.features.leaveroom.api.LeaveRoomState
|
||||||
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsState
|
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsState
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
|
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.RoomNotificationSettings
|
import io.element.android.libraries.matrix.api.room.RoomNotificationSettings
|
||||||
|
|
||||||
data class RoomDetailsState(
|
data class RoomDetailsState(
|
||||||
val roomId: String,
|
val roomId: RoomId,
|
||||||
val roomName: String,
|
val roomName: String,
|
||||||
val roomAlias: String?,
|
val roomAlias: RoomAlias?,
|
||||||
val roomAvatarUrl: String?,
|
val roomAvatarUrl: String?,
|
||||||
val roomTopic: RoomTopicState,
|
val roomTopic: RoomTopicState,
|
||||||
val memberCount: Long,
|
val memberCount: Long,
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ import io.element.android.features.leaveroom.api.LeaveRoomState
|
||||||
import io.element.android.features.leaveroom.api.aLeaveRoomState
|
import io.element.android.features.leaveroom.api.aLeaveRoomState
|
||||||
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsState
|
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsState
|
||||||
import io.element.android.features.roomdetails.impl.members.details.aRoomMemberDetailsState
|
import io.element.android.features.roomdetails.impl.members.details.aRoomMemberDetailsState
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.UserId
|
import io.element.android.libraries.matrix.api.core.UserId
|
||||||
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.RoomMembershipState
|
import io.element.android.libraries.matrix.api.room.RoomMembershipState
|
||||||
|
|
@ -71,9 +73,9 @@ fun aDmRoomMember(
|
||||||
)
|
)
|
||||||
|
|
||||||
fun aRoomDetailsState(
|
fun aRoomDetailsState(
|
||||||
roomId: String = "a room id",
|
roomId: RoomId = RoomId("!aRoomId:domain.com"),
|
||||||
roomName: String = "Marketing",
|
roomName: String = "Marketing",
|
||||||
roomAlias: String? = "#marketing:domain.com",
|
roomAlias: RoomAlias? = RoomAlias("#marketing:domain.com"),
|
||||||
roomAvatarUrl: String? = null,
|
roomAvatarUrl: String? = null,
|
||||||
roomTopic: RoomTopicState = RoomTopicState.ExistingTopic(
|
roomTopic: RoomTopicState = RoomTopicState.ExistingTopic(
|
||||||
"Welcome to #marketing, home of the Marketing team " +
|
"Welcome to #marketing, home of the Marketing team " +
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,8 @@ import io.element.android.libraries.designsystem.theme.components.Scaffold
|
||||||
import io.element.android.libraries.designsystem.theme.components.Text
|
import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
import io.element.android.libraries.designsystem.theme.components.TopAppBar
|
import io.element.android.libraries.designsystem.theme.components.TopAppBar
|
||||||
import io.element.android.libraries.designsystem.utils.CommonDrawables
|
import io.element.android.libraries.designsystem.utils.CommonDrawables
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
|
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.RoomNotificationMode
|
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
||||||
import io.element.android.libraries.matrix.api.room.getBestName
|
import io.element.android.libraries.matrix.api.room.getBestName
|
||||||
|
|
@ -302,9 +304,9 @@ private fun MainActionsSection(
|
||||||
@Composable
|
@Composable
|
||||||
private fun RoomHeaderSection(
|
private fun RoomHeaderSection(
|
||||||
avatarUrl: String?,
|
avatarUrl: String?,
|
||||||
roomId: String,
|
roomId: RoomId,
|
||||||
roomName: String,
|
roomName: String,
|
||||||
roomAlias: String?,
|
roomAlias: RoomAlias?,
|
||||||
openAvatarPreview: (url: String) -> Unit,
|
openAvatarPreview: (url: String) -> Unit,
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
|
|
@ -314,7 +316,7 @@ private fun RoomHeaderSection(
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
) {
|
) {
|
||||||
Avatar(
|
Avatar(
|
||||||
avatarData = AvatarData(roomId, roomName, avatarUrl, AvatarSize.RoomHeader),
|
avatarData = AvatarData(roomId.value, roomName, avatarUrl, AvatarSize.RoomHeader),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(70.dp)
|
.size(70.dp)
|
||||||
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
|
.clickable(enabled = avatarUrl != null) { openAvatarPreview(avatarUrl!!) }
|
||||||
|
|
@ -329,7 +331,7 @@ private fun RoomHeaderSection(
|
||||||
if (roomAlias != null) {
|
if (roomAlias != null) {
|
||||||
Spacer(modifier = Modifier.height(6.dp))
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
Text(
|
Text(
|
||||||
text = roomAlias,
|
text = roomAlias.value,
|
||||||
style = ElementTheme.typography.fontBodyLgRegular,
|
style = ElementTheme.typography.fontBodyLgRegular,
|
||||||
color = MaterialTheme.colorScheme.secondary,
|
color = MaterialTheme.colorScheme.secondary,
|
||||||
textAlign = TextAlign.Center,
|
textAlign = TextAlign.Center,
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import android.os.Parcelable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
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
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
@ -29,7 +30,7 @@ import kotlinx.parcelize.Parcelize
|
||||||
data class RoomDescription(
|
data class RoomDescription(
|
||||||
val roomId: RoomId,
|
val roomId: RoomId,
|
||||||
val name: String?,
|
val name: String?,
|
||||||
val alias: String?,
|
val alias: RoomAlias?,
|
||||||
val topic: String?,
|
val topic: String?,
|
||||||
val avatarUrl: String?,
|
val avatarUrl: String?,
|
||||||
val joinRule: JoinRule,
|
val joinRule: JoinRule,
|
||||||
|
|
@ -42,14 +43,14 @@ data class RoomDescription(
|
||||||
}
|
}
|
||||||
|
|
||||||
@IgnoredOnParcel
|
@IgnoredOnParcel
|
||||||
val computedName = name ?: alias ?: roomId.value
|
val computedName = name ?: alias?.value ?: roomId.value
|
||||||
|
|
||||||
@IgnoredOnParcel
|
@IgnoredOnParcel
|
||||||
val computedDescription: String
|
val computedDescription: String
|
||||||
get() {
|
get() {
|
||||||
return when {
|
return when {
|
||||||
topic != null -> topic
|
topic != null -> topic
|
||||||
name != null && alias != null -> alias
|
name != null && alias != null -> alias.value
|
||||||
name == null && alias == null -> ""
|
name == null && alias == null -> ""
|
||||||
else -> roomId.value
|
else -> roomId.value
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package io.element.android.features.roomdirectory.impl.root
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import io.element.android.features.roomdirectory.api.RoomDescription
|
import io.element.android.features.roomdirectory.api.RoomDescription
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
@ -69,7 +70,7 @@ fun aRoomDescriptionList(): ImmutableList<RoomDescription> {
|
||||||
roomId = RoomId("!exa:matrix.org"),
|
roomId = RoomId("!exa:matrix.org"),
|
||||||
name = "Element X Android",
|
name = "Element X Android",
|
||||||
topic = "Element X is a secure, private and decentralized messenger.",
|
topic = "Element X is a secure, private and decentralized messenger.",
|
||||||
alias = "#element-x-android:matrix.org",
|
alias = RoomAlias("#element-x-android:matrix.org"),
|
||||||
avatarUrl = null,
|
avatarUrl = null,
|
||||||
joinRule = RoomDescription.JoinRule.PUBLIC,
|
joinRule = RoomDescription.JoinRule.PUBLIC,
|
||||||
numberOfMembers = 2765,
|
numberOfMembers = 2765,
|
||||||
|
|
@ -78,7 +79,7 @@ fun aRoomDescriptionList(): ImmutableList<RoomDescription> {
|
||||||
roomId = RoomId("!exi:matrix.org"),
|
roomId = RoomId("!exi:matrix.org"),
|
||||||
name = "Element X iOS",
|
name = "Element X iOS",
|
||||||
topic = "Element X is a secure, private and decentralized messenger.",
|
topic = "Element X is a secure, private and decentralized messenger.",
|
||||||
alias = "#element-x-ios:matrix.org",
|
alias = RoomAlias("#element-x-ios:matrix.org"),
|
||||||
avatarUrl = null,
|
avatarUrl = null,
|
||||||
joinRule = RoomDescription.JoinRule.UNKNOWN,
|
joinRule = RoomDescription.JoinRule.UNKNOWN,
|
||||||
numberOfMembers = 356,
|
numberOfMembers = 356,
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ package io.element.android.libraries.matrix.api.room
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.TransactionId
|
import io.element.android.libraries.matrix.api.core.TransactionId
|
||||||
|
|
@ -45,8 +46,8 @@ interface MatrixRoom : Closeable {
|
||||||
val roomId: RoomId
|
val roomId: RoomId
|
||||||
val name: String?
|
val name: String?
|
||||||
val displayName: String
|
val displayName: String
|
||||||
val alias: String?
|
val alias: RoomAlias?
|
||||||
val alternativeAliases: List<String>
|
val alternativeAliases: List<RoomAlias>
|
||||||
val topic: String?
|
val topic: String?
|
||||||
val avatarUrl: String?
|
val avatarUrl: String?
|
||||||
val isEncrypted: Boolean
|
val isEncrypted: Boolean
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,14 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.api.room.preview
|
package io.element.android.libraries.matrix.api.room.preview
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
||||||
data class RoomPreview(
|
data class RoomPreview(
|
||||||
/** The room id for this room. */
|
/** The room id for this room. */
|
||||||
val roomId: RoomId,
|
val roomId: RoomId,
|
||||||
/** The canonical alias for the room. */
|
/** The canonical alias for the room. */
|
||||||
val canonicalAlias: String?,
|
val canonicalAlias : RoomAlias?,
|
||||||
/** The room's name, if set. */
|
/** The room's name, if set. */
|
||||||
val name: String?,
|
val name: String?,
|
||||||
/** The room's topic, if set. */
|
/** The room's topic, if set. */
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,14 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.api.roomdirectory
|
package io.element.android.libraries.matrix.api.roomdirectory
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
||||||
data class RoomDescription(
|
data class RoomDescription(
|
||||||
val roomId: RoomId,
|
val roomId: RoomId,
|
||||||
val name: String?,
|
val name: String?,
|
||||||
val topic: String?,
|
val topic: String?,
|
||||||
val alias: String?,
|
val alias: RoomAlias?,
|
||||||
val avatarUrl: String?,
|
val avatarUrl: String?,
|
||||||
val joinRule: JoinRule,
|
val joinRule: JoinRule,
|
||||||
val isWorldReadable: Boolean,
|
val isWorldReadable: Boolean,
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.api.roomlist
|
package io.element.android.libraries.matrix.api.roomlist
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.CurrentUserMembership
|
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
||||||
import io.element.android.libraries.matrix.api.room.RoomMember
|
import io.element.android.libraries.matrix.api.room.RoomMember
|
||||||
|
|
@ -37,7 +38,7 @@ sealed interface RoomSummary {
|
||||||
data class RoomSummaryDetails(
|
data class RoomSummaryDetails(
|
||||||
val roomId: RoomId,
|
val roomId: RoomId,
|
||||||
val name: String,
|
val name: String,
|
||||||
val canonicalAlias: String?,
|
val canonicalAlias: RoomAlias?,
|
||||||
val isDirect: Boolean,
|
val isDirect: Boolean,
|
||||||
val avatarUrl: String?,
|
val avatarUrl: String?,
|
||||||
val lastMessage: RoomMessage?,
|
val lastMessage: RoomMessage?,
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.core.coroutine.childScope
|
import io.element.android.libraries.core.coroutine.childScope
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
import io.element.android.libraries.matrix.api.core.ProgressCallback
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.TransactionId
|
import io.element.android.libraries.matrix.api.core.TransactionId
|
||||||
|
|
@ -205,11 +206,11 @@ class RustMatrixRoom(
|
||||||
override val isEncrypted: Boolean
|
override val isEncrypted: Boolean
|
||||||
get() = runCatching { innerRoom.isEncrypted() }.getOrDefault(false)
|
get() = runCatching { innerRoom.isEncrypted() }.getOrDefault(false)
|
||||||
|
|
||||||
override val alias: String?
|
override val alias: RoomAlias?
|
||||||
get() = runCatching { innerRoom.canonicalAlias() }.getOrDefault(null)
|
get() = runCatching { innerRoom.canonicalAlias()?.let(::RoomAlias) }.getOrDefault(null)
|
||||||
|
|
||||||
override val alternativeAliases: List<String>
|
override val alternativeAliases: List<RoomAlias>
|
||||||
get() = runCatching { innerRoom.alternativeAliases() }.getOrDefault(emptyList())
|
get() = runCatching { innerRoom.alternativeAliases().map { RoomAlias(it) } }.getOrDefault(emptyList())
|
||||||
|
|
||||||
override val isPublic: Boolean
|
override val isPublic: Boolean
|
||||||
get() = runCatching { innerRoom.isPublic() }.getOrDefault(false)
|
get() = runCatching { innerRoom.isPublic() }.getOrDefault(false)
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.impl.room.preview
|
package io.element.android.libraries.matrix.impl.room.preview
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.preview.RoomPreview
|
import io.element.android.libraries.matrix.api.room.preview.RoomPreview
|
||||||
import org.matrix.rustcomponents.sdk.RoomPreview as RustRoomPreview
|
import org.matrix.rustcomponents.sdk.RoomPreview as RustRoomPreview
|
||||||
|
|
@ -24,7 +25,7 @@ object RoomPreviewMapper {
|
||||||
fun map(roomPreview: RustRoomPreview): RoomPreview {
|
fun map(roomPreview: RustRoomPreview): RoomPreview {
|
||||||
return RoomPreview(
|
return RoomPreview(
|
||||||
roomId = RoomId(roomPreview.roomId),
|
roomId = RoomId(roomPreview.roomId),
|
||||||
canonicalAlias = roomPreview.canonicalAlias,
|
canonicalAlias = roomPreview.canonicalAlias?.let(::RoomAlias),
|
||||||
name = roomPreview.name,
|
name = roomPreview.name,
|
||||||
topic = roomPreview.topic,
|
topic = roomPreview.topic,
|
||||||
avatarUrl = roomPreview.avatarUrl,
|
avatarUrl = roomPreview.avatarUrl,
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.impl.roomdirectory
|
package io.element.android.libraries.matrix.impl.roomdirectory
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.roomdirectory.RoomDescription
|
import io.element.android.libraries.matrix.api.roomdirectory.RoomDescription
|
||||||
import org.matrix.rustcomponents.sdk.PublicRoomJoinRule
|
import org.matrix.rustcomponents.sdk.PublicRoomJoinRule
|
||||||
|
|
@ -28,7 +29,7 @@ class RoomDescriptionMapper {
|
||||||
name = roomDescription.name,
|
name = roomDescription.name,
|
||||||
topic = roomDescription.topic,
|
topic = roomDescription.topic,
|
||||||
avatarUrl = roomDescription.avatarUrl,
|
avatarUrl = roomDescription.avatarUrl,
|
||||||
alias = roomDescription.alias,
|
alias = roomDescription.alias?.let(::RoomAlias),
|
||||||
joinRule = when (roomDescription.joinRule) {
|
joinRule = when (roomDescription.joinRule) {
|
||||||
PublicRoomJoinRule.PUBLIC -> RoomDescription.JoinRule.PUBLIC
|
PublicRoomJoinRule.PUBLIC -> RoomDescription.JoinRule.PUBLIC
|
||||||
PublicRoomJoinRule.KNOCK -> RoomDescription.JoinRule.KNOCK
|
PublicRoomJoinRule.KNOCK -> RoomDescription.JoinRule.KNOCK
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.impl.roomlist
|
package io.element.android.libraries.matrix.impl.roomlist
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.impl.notificationsettings.RoomNotificationSettingsMapper
|
import io.element.android.libraries.matrix.impl.notificationsettings.RoomNotificationSettingsMapper
|
||||||
|
|
@ -33,7 +34,7 @@ class RoomSummaryDetailsFactory(private val roomMessageFactory: RoomMessageFacto
|
||||||
return RoomSummaryDetails(
|
return RoomSummaryDetails(
|
||||||
roomId = RoomId(roomInfo.id),
|
roomId = RoomId(roomInfo.id),
|
||||||
name = roomInfo.name ?: roomInfo.id,
|
name = roomInfo.name ?: roomInfo.id,
|
||||||
canonicalAlias = roomInfo.canonicalAlias,
|
canonicalAlias = roomInfo.canonicalAlias?.let(::RoomAlias),
|
||||||
isDirect = roomInfo.isDirect,
|
isDirect = roomInfo.isDirect,
|
||||||
avatarUrl = roomInfo.avatarUrl,
|
avatarUrl = roomInfo.avatarUrl,
|
||||||
numUnreadMentions = roomInfo.numUnreadMentions.toInt(),
|
numUnreadMentions = roomInfo.numUnreadMentions.toInt(),
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,8 @@ class FakeMatrixRoom(
|
||||||
override val topic: String? = null,
|
override val topic: String? = null,
|
||||||
override val avatarUrl: String? = null,
|
override val avatarUrl: String? = null,
|
||||||
override val isEncrypted: Boolean = false,
|
override val isEncrypted: Boolean = false,
|
||||||
override val alias: String? = null,
|
override val alias: RoomAlias? = null,
|
||||||
override val alternativeAliases: List<String> = emptyList(),
|
override val alternativeAliases: List<RoomAlias> = emptyList(),
|
||||||
override val isPublic: Boolean = true,
|
override val isPublic: Boolean = true,
|
||||||
override val isSpace: Boolean = false,
|
override val isSpace: Boolean = false,
|
||||||
override val isDirect: Boolean = false,
|
override val isDirect: Boolean = false,
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
package io.element.android.libraries.matrix.test.room
|
package io.element.android.libraries.matrix.test.room
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.core.UserId
|
import io.element.android.libraries.matrix.api.core.UserId
|
||||||
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
||||||
|
|
@ -72,7 +73,7 @@ fun aRoomSummaryDetails(
|
||||||
isMarkedUnread: Boolean = false,
|
isMarkedUnread: Boolean = false,
|
||||||
notificationMode: RoomNotificationMode? = null,
|
notificationMode: RoomNotificationMode? = null,
|
||||||
inviter: RoomMember? = null,
|
inviter: RoomMember? = null,
|
||||||
canonicalAlias: String? = null,
|
canonicalAlias: RoomAlias? = null,
|
||||||
hasRoomCall: Boolean = false,
|
hasRoomCall: Boolean = false,
|
||||||
isDm: Boolean = false,
|
isDm: Boolean = false,
|
||||||
isFavorite: Boolean = false,
|
isFavorite: Boolean = false,
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.libraries.matrix.test.roomdirectory
|
package io.element.android.libraries.matrix.test.roomdirectory
|
||||||
|
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.roomdirectory.RoomDescription
|
import io.element.android.libraries.matrix.api.roomdirectory.RoomDescription
|
||||||
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
import io.element.android.libraries.matrix.test.A_ROOM_ID
|
||||||
|
|
@ -24,7 +25,7 @@ fun aRoomDescription(
|
||||||
roomId: RoomId = A_ROOM_ID,
|
roomId: RoomId = A_ROOM_ID,
|
||||||
name: String? = null,
|
name: String? = null,
|
||||||
topic: String? = null,
|
topic: String? = null,
|
||||||
alias: String? = null,
|
alias: RoomAlias? = null,
|
||||||
avatarUrl: String? = null,
|
avatarUrl: String? = null,
|
||||||
joinRule: RoomDescription.JoinRule = RoomDescription.JoinRule.UNKNOWN,
|
joinRule: RoomDescription.JoinRule = RoomDescription.JoinRule.UNKNOWN,
|
||||||
isWorldReadable: Boolean = true,
|
isWorldReadable: Boolean = true,
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
import io.element.android.libraries.designsystem.theme.components.Icon
|
import io.element.android.libraries.designsystem.theme.components.Icon
|
||||||
import io.element.android.libraries.designsystem.theme.components.Surface
|
import io.element.android.libraries.designsystem.theme.components.Surface
|
||||||
import io.element.android.libraries.designsystem.theme.components.Text
|
import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.CurrentUserMembership
|
import io.element.android.libraries.matrix.api.room.CurrentUserMembership
|
||||||
import io.element.android.libraries.matrix.api.room.RoomMember
|
import io.element.android.libraries.matrix.api.room.RoomMember
|
||||||
|
|
@ -106,7 +107,7 @@ internal fun SelectedRoomPreview() = ElementPreview {
|
||||||
fun aRoomSummaryDetails(
|
fun aRoomSummaryDetails(
|
||||||
roomId: RoomId = RoomId("!room:domain"),
|
roomId: RoomId = RoomId("!room:domain"),
|
||||||
name: String = "roomName",
|
name: String = "roomName",
|
||||||
canonicalAlias: String? = null,
|
canonicalAlias: RoomAlias? = null,
|
||||||
isDirect: Boolean = true,
|
isDirect: Boolean = true,
|
||||||
avatarUrl: String? = null,
|
avatarUrl: String? = null,
|
||||||
lastMessage: RoomMessage? = null,
|
lastMessage: RoomMessage? = null,
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ 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.designsystem.theme.components.SearchBarResultState
|
import io.element.android.libraries.designsystem.theme.components.SearchBarResultState
|
||||||
|
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||||
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.aRoomSummaryDetails
|
import io.element.android.libraries.matrix.ui.components.aRoomSummaryDetails
|
||||||
|
|
@ -65,6 +66,6 @@ private fun aForwardMessagesRoomList() = persistentListOf(
|
||||||
aRoomSummaryDetails(
|
aRoomSummaryDetails(
|
||||||
roomId = RoomId("!room2:domain"),
|
roomId = RoomId("!room2:domain"),
|
||||||
name = "Room with alias",
|
name = "Room with alias",
|
||||||
canonicalAlias = "#alias:example.org",
|
canonicalAlias = RoomAlias("#alias:example.org"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -243,7 +243,7 @@ private fun RoomSummaryView(
|
||||||
// Alias
|
// Alias
|
||||||
summary.canonicalAlias?.let { alias ->
|
summary.canonicalAlias?.let { alias ->
|
||||||
Text(
|
Text(
|
||||||
text = alias,
|
text = alias.value,
|
||||||
color = ElementTheme.colors.textSecondary,
|
color = ElementTheme.colors.textSecondary,
|
||||||
style = ElementTheme.typography.fontBodySmRegular,
|
style = ElementTheme.typography.fontBodySmRegular,
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue