Avoid crash on placeholder RoomSummary
This commit is contained in:
parent
e651d2f9c5
commit
7c8524d3c1
5 changed files with 13 additions and 4 deletions
|
|
@ -44,6 +44,7 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationS
|
||||||
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
|
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
|
||||||
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
||||||
import io.element.android.features.networkmonitor.api.NetworkStatus
|
import io.element.android.features.networkmonitor.api.NetworkStatus
|
||||||
|
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
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
|
|
@ -177,8 +178,10 @@ class RoomListPresenter @Inject constructor(
|
||||||
name = roomSummary.details.name,
|
name = roomSummary.details.name,
|
||||||
url = roomSummary.details.avatarURLString
|
url = roomSummary.details.avatarURLString
|
||||||
)
|
)
|
||||||
|
val roomIdentifier = roomSummary.identifier()
|
||||||
RoomListRoomSummary(
|
RoomListRoomSummary(
|
||||||
id = roomSummary.identifier(),
|
id = roomSummary.identifier(),
|
||||||
|
roomId = RoomId(roomIdentifier),
|
||||||
name = roomSummary.details.name,
|
name = roomSummary.details.name,
|
||||||
hasUnread = roomSummary.details.unreadNotificationCount > 0,
|
hasUnread = roomSummary.details.unreadNotificationCount > 0,
|
||||||
timestamp = lastMessageTimestampFormatter.format(roomSummary.details.lastMessageTimestamp),
|
timestamp = lastMessageTimestampFormatter.format(roomSummary.details.lastMessageTimestamp),
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
||||||
import io.element.android.features.roomlist.impl.model.RoomListRoomSummaryPlaceholders
|
import io.element.android.features.roomlist.impl.model.RoomListRoomSummaryPlaceholders
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||||
import io.element.android.libraries.designsystem.utils.SnackbarMessage
|
import io.element.android.libraries.designsystem.utils.SnackbarMessage
|
||||||
|
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.ui.model.MatrixUser
|
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
|
|
@ -57,7 +58,8 @@ internal fun aRoomListRoomSummaryList(): ImmutableList<RoomListRoomSummary> {
|
||||||
timestamp = "14:18",
|
timestamp = "14:18",
|
||||||
lastMessage = "A very very very very long message which suites on two lines",
|
lastMessage = "A very very very very long message which suites on two lines",
|
||||||
avatarData = AvatarData("!id", "R"),
|
avatarData = AvatarData("!id", "R"),
|
||||||
id = "!roomId:domain"
|
id = "!roomId:domain",
|
||||||
|
roomId = RoomId("!roomId:domain")
|
||||||
),
|
),
|
||||||
RoomListRoomSummary(
|
RoomListRoomSummary(
|
||||||
name = "Room#2",
|
name = "Room#2",
|
||||||
|
|
@ -65,7 +67,8 @@ internal fun aRoomListRoomSummaryList(): ImmutableList<RoomListRoomSummary> {
|
||||||
timestamp = "14:16",
|
timestamp = "14:16",
|
||||||
lastMessage = "A short message",
|
lastMessage = "A short message",
|
||||||
avatarData = AvatarData("!id", "Z"),
|
avatarData = AvatarData("!id", "Z"),
|
||||||
id = "!roomId2:domain"
|
id = "!roomId2:domain",
|
||||||
|
roomId = RoomId("!roomId2:domain")
|
||||||
),
|
),
|
||||||
RoomListRoomSummaryPlaceholders.create("!roomId2:domain")
|
RoomListRoomSummaryPlaceholders.create("!roomId2:domain")
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import androidx.compose.ui.unit.Velocity
|
import androidx.compose.ui.unit.Velocity
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorView
|
||||||
import io.element.android.features.roomlist.impl.components.RoomListTopBar
|
import io.element.android.features.roomlist.impl.components.RoomListTopBar
|
||||||
import io.element.android.features.roomlist.impl.components.RoomSummaryRow
|
import io.element.android.features.roomlist.impl.components.RoomSummaryRow
|
||||||
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
||||||
|
|
@ -76,7 +77,6 @@ import io.element.android.libraries.designsystem.theme.components.TextButton
|
||||||
import io.element.android.libraries.designsystem.theme.roomListUnreadIndicator
|
import io.element.android.libraries.designsystem.theme.roomListUnreadIndicator
|
||||||
import io.element.android.libraries.designsystem.utils.LogCompositions
|
import io.element.android.libraries.designsystem.utils.LogCompositions
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.features.networkmonitor.api.ui.ConnectivityIndicatorView
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import io.element.android.libraries.designsystem.R as DrawableR
|
import io.element.android.libraries.designsystem.R as DrawableR
|
||||||
import io.element.android.libraries.ui.strings.R as StringR
|
import io.element.android.libraries.ui.strings.R as StringR
|
||||||
|
|
@ -114,6 +114,7 @@ fun RoomListContent(
|
||||||
onInvitesClicked: () -> Unit = {},
|
onInvitesClicked: () -> Unit = {},
|
||||||
) {
|
) {
|
||||||
fun onRoomClicked(room: RoomListRoomSummary) {
|
fun onRoomClicked(room: RoomListRoomSummary) {
|
||||||
|
if (room.roomId == null) return
|
||||||
onRoomClicked(room.roomId)
|
onRoomClicked(room.roomId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,14 @@
|
||||||
package io.element.android.features.roomlist.impl.model
|
package io.element.android.features.roomlist.impl.model
|
||||||
|
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
|
import io.element.android.libraries.core.data.tryOrNull
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
data class RoomListRoomSummary(
|
data class RoomListRoomSummary(
|
||||||
val id: String,
|
val id: String,
|
||||||
val roomId: RoomId = RoomId(id),
|
val roomId: RoomId?,
|
||||||
val name: String = "",
|
val name: String = "",
|
||||||
val hasUnread: Boolean = false,
|
val hasUnread: Boolean = false,
|
||||||
val timestamp: String? = null,
|
val timestamp: String? = null,
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ object RoomListRoomSummaryPlaceholders {
|
||||||
fun create(id: String): RoomListRoomSummary {
|
fun create(id: String): RoomListRoomSummary {
|
||||||
return RoomListRoomSummary(
|
return RoomListRoomSummary(
|
||||||
id = id,
|
id = id,
|
||||||
|
roomId = null,
|
||||||
isPlaceholder = true,
|
isPlaceholder = true,
|
||||||
name = "Short name",
|
name = "Short name",
|
||||||
timestamp = "hh:mm",
|
timestamp = "hh:mm",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue