diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt
index 27adffbcb6..5b6e5ad79a 100644
--- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt
+++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomPresenter.kt
@@ -211,7 +211,7 @@ internal fun ContentState.toInviteData(): InviteData? {
return when (this) {
is ContentState.Loaded -> InviteData(
roomId = roomId,
- roomName = computedTitle,
+ roomName = name ?: roomId.value,
isDirect = isDirect
)
else -> null
diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt
index 1b78e10905..7c885214a1 100644
--- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt
+++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomState.kt
@@ -55,14 +55,6 @@ sealed interface ContentState {
val roomAvatarUrl: String?,
val joinAuthorisationStatus: JoinAuthorisationStatus,
) : ContentState {
- val computedTitle = name ?: roomId.value
-
- val computedSubtitle = when {
- alias != null -> alias.value
- name == null -> ""
- else -> roomId.value
- }
-
val showMemberCount = numberOfMembers != null
fun avatarData(size: AvatarSize): AvatarData {
diff --git a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt
index 6649987c58..7d579434f6 100644
--- a/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt
+++ b/features/joinroom/impl/src/main/kotlin/io/element/android/features/joinroom/impl/JoinRoomView.kt
@@ -29,6 +29,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
@@ -177,13 +178,28 @@ private fun JoinRoomContent(
RoomPreviewOrganism(
modifier = modifier,
avatar = {
- Avatar(contentState.avatarData(AvatarSize.RoomHeader))
+ if (contentState.name == null && contentState.roomAvatarUrl == null) {
+ PlaceholderAtom(width = AvatarSize.RoomHeader.dp, height = AvatarSize.RoomHeader.dp)
+ } else {
+ Avatar(contentState.avatarData(AvatarSize.RoomHeader))
+ }
},
title = {
- RoomPreviewTitleAtom(contentState.computedTitle)
+ if (contentState.name != null) {
+ RoomPreviewTitleAtom(
+ title = contentState.name,
+ )
+ } else {
+ RoomPreviewTitleAtom(
+ title = stringResource(id = CommonStrings.common_no_room_name),
+ fontStyle = FontStyle.Italic
+ )
+ }
},
subtitle = {
- RoomPreviewSubtitleAtom(contentState.computedSubtitle)
+ if (contentState.alias != null) {
+ RoomPreviewSubtitleAtom(contentState.alias.value)
+ }
},
description = {
Column(
diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoomPreviewTitleAtom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoomPreviewTitleAtom.kt
index 81edd42db5..bccadf8198 100644
--- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoomPreviewTitleAtom.kt
+++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/atoms/RoomPreviewTitleAtom.kt
@@ -18,17 +18,23 @@ package io.element.android.libraries.designsystem.atomic.atoms
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
+import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.TextAlign
import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.designsystem.theme.components.Text
@Composable
-fun RoomPreviewTitleAtom(title: String, modifier: Modifier = Modifier) {
+fun RoomPreviewTitleAtom(
+ title: String,
+ modifier: Modifier = Modifier,
+ fontStyle: FontStyle? = null,
+) {
Text(
modifier = modifier,
text = title,
style = ElementTheme.typography.fontHeadingMdBold,
textAlign = TextAlign.Center,
+ fontStyle = fontStyle,
color = ElementTheme.colors.textPrimary,
)
}
diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml
index 8366daf9c4..7d49261c4e 100644
--- a/libraries/ui-strings/src/main/res/values/localazy.xml
+++ b/libraries/ui-strings/src/main/res/values/localazy.xml
@@ -158,6 +158,7 @@
"Modern"
"Mute"
"No results"
+ "No room name"
"Offline"
"or"
"Password"