RoomList : allow to show empty state and invites.

This commit is contained in:
ganfra 2024-02-21 16:31:12 +01:00
parent e7ed466b4f
commit 840465340d
2 changed files with 52 additions and 51 deletions

View file

@ -42,6 +42,8 @@ data class RoomListState(
val displayMigrationStatus: Boolean, val displayMigrationStatus: Boolean,
val eventSink: (RoomListEvents) -> Unit, val eventSink: (RoomListEvents) -> Unit,
) { ) {
val displayEmptyState = roomList is AsyncData.Success && roomList.data.isEmpty()
sealed interface ContextMenu { sealed interface ContextMenu {
data object Hidden : ContextMenu data object Hidden : ContextMenu
data class Shown( data class Shown(

View file

@ -58,7 +58,6 @@ import io.element.android.features.roomlist.impl.components.RoomSummaryRow
import io.element.android.features.roomlist.impl.migration.MigrationScreenView import io.element.android.features.roomlist.impl.migration.MigrationScreenView
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
import io.element.android.features.roomlist.impl.search.RoomListSearchView import io.element.android.features.roomlist.impl.search.RoomListSearchView
import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.Button
@ -135,9 +134,10 @@ fun RoomListView(
@Composable @Composable
private fun EmptyRoomListView( private fun EmptyRoomListView(
onCreateRoomClicked: () -> Unit, onCreateRoomClicked: () -> Unit,
modifier: Modifier = Modifier
) { ) {
Column( Column(
modifier = Modifier.fillMaxSize(), modifier = modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center verticalArrangement = Arrangement.Center
) { ) {
@ -216,9 +216,6 @@ private fun RoomListContent(
) )
}, },
content = { padding -> content = { padding ->
if (state.roomList is AsyncData.Success && state.roomList.data.isEmpty()) {
EmptyRoomListView(onCreateRoomClicked)
} else {
LazyColumn( LazyColumn(
modifier = Modifier modifier = Modifier
.padding(padding) .padding(padding)
@ -229,6 +226,7 @@ private fun RoomListContent(
contentPadding = PaddingValues(bottom = 80.dp) contentPadding = PaddingValues(bottom = 80.dp)
) { ) {
when { when {
state.displayEmptyState -> Unit
state.displayVerificationPrompt -> { state.displayVerificationPrompt -> {
item { item {
RequestVerificationHeader( RequestVerificationHeader(
@ -270,8 +268,9 @@ private fun RoomListContent(
} }
} }
} }
if (state.displayEmptyState) {
EmptyRoomListView(onCreateRoomClicked)
} }
MigrationScreenView(isMigrating = state.displayMigrationStatus) MigrationScreenView(isMigrating = state.displayMigrationStatus)
}, },
floatingActionButton = { floatingActionButton = {