|
|
|
@ -17,6 +17,7 @@
@@ -17,6 +17,7 @@
|
|
|
|
|
package io.element.android.features.roomdirectory.impl.root |
|
|
|
|
|
|
|
|
|
import androidx.compose.foundation.clickable |
|
|
|
|
import androidx.compose.foundation.layout.Box |
|
|
|
|
import androidx.compose.foundation.layout.Column |
|
|
|
|
import androidx.compose.foundation.layout.IntrinsicSize |
|
|
|
|
import androidx.compose.foundation.layout.Row |
|
|
|
@ -26,6 +27,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
@@ -26,6 +27,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
|
|
import androidx.compose.foundation.layout.height |
|
|
|
|
import androidx.compose.foundation.layout.padding |
|
|
|
|
import androidx.compose.foundation.layout.width |
|
|
|
|
import androidx.compose.foundation.layout.wrapContentHeight |
|
|
|
|
import androidx.compose.foundation.lazy.LazyColumn |
|
|
|
|
import androidx.compose.foundation.lazy.items |
|
|
|
|
import androidx.compose.foundation.text.KeyboardActions |
|
|
|
@ -33,6 +35,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
@@ -33,6 +35,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
|
|
|
|
import androidx.compose.material3.TextFieldColors |
|
|
|
|
import androidx.compose.material3.TextFieldDefaults |
|
|
|
|
import androidx.compose.runtime.Composable |
|
|
|
|
import androidx.compose.runtime.LaunchedEffect |
|
|
|
|
import androidx.compose.ui.Alignment |
|
|
|
|
import androidx.compose.ui.Modifier |
|
|
|
|
import androidx.compose.ui.graphics.Color |
|
|
|
@ -49,6 +52,7 @@ import io.element.android.libraries.designsystem.components.button.BackButton
@@ -49,6 +52,7 @@ import io.element.android.libraries.designsystem.components.button.BackButton
|
|
|
|
|
import io.element.android.libraries.designsystem.preview.ElementPreview |
|
|
|
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight |
|
|
|
|
import io.element.android.libraries.designsystem.theme.aliasScreenTitle |
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator |
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.Icon |
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.IconButton |
|
|
|
|
import io.element.android.libraries.designsystem.theme.components.Scaffold |
|
|
|
@ -119,7 +123,10 @@ private fun RoomDirectoryContent(
@@ -119,7 +123,10 @@ private fun RoomDirectoryContent(
|
|
|
|
|
) |
|
|
|
|
RoomDirectoryRoomList( |
|
|
|
|
roomDescriptions = state.roomDescriptions, |
|
|
|
|
displayLoadMoreIndicator = state.displayLoadMoreIndicator, |
|
|
|
|
displayEmptyState = state.displayEmptyState, |
|
|
|
|
onResultClicked = onResultClicked, |
|
|
|
|
onReachedLoadMore = { state.eventSink(RoomDirectoryEvents.LoadMore) }, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -127,18 +134,52 @@ private fun RoomDirectoryContent(
@@ -127,18 +134,52 @@ private fun RoomDirectoryContent(
|
|
|
|
|
@Composable |
|
|
|
|
private fun RoomDirectoryRoomList( |
|
|
|
|
roomDescriptions: ImmutableList<RoomDescriptionUiModel>, |
|
|
|
|
displayLoadMoreIndicator: Boolean, |
|
|
|
|
displayEmptyState: Boolean, |
|
|
|
|
onResultClicked: (RoomId) -> Unit, |
|
|
|
|
onReachedLoadMore: () -> Unit, |
|
|
|
|
modifier: Modifier = Modifier, |
|
|
|
|
) { |
|
|
|
|
LazyColumn( |
|
|
|
|
modifier = modifier, |
|
|
|
|
) { |
|
|
|
|
LazyColumn(modifier = modifier) { |
|
|
|
|
items(roomDescriptions) { roomDescription -> |
|
|
|
|
RoomDirectoryRoomRow( |
|
|
|
|
roomDescription = roomDescription, |
|
|
|
|
onClick = onResultClicked, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
if (displayEmptyState) { |
|
|
|
|
item { |
|
|
|
|
Text( |
|
|
|
|
text = stringResource(id = CommonStrings.common_no_results), |
|
|
|
|
style = ElementTheme.typography.fontBodyLgRegular, |
|
|
|
|
color = ElementTheme.colors.textPlaceholder, |
|
|
|
|
modifier = Modifier.padding(16.dp) |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (displayLoadMoreIndicator) { |
|
|
|
|
item { |
|
|
|
|
LoadMoreIndicator(modifier = Modifier.fillMaxWidth()) |
|
|
|
|
LaunchedEffect(Unit) { |
|
|
|
|
onReachedLoadMore() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Composable |
|
|
|
|
private fun LoadMoreIndicator(modifier: Modifier = Modifier) { |
|
|
|
|
Box( |
|
|
|
|
modifier |
|
|
|
|
.fillMaxWidth() |
|
|
|
|
.wrapContentHeight() |
|
|
|
|
.padding(8.dp), |
|
|
|
|
contentAlignment = Alignment.Center, |
|
|
|
|
) { |
|
|
|
|
CircularProgressIndicator( |
|
|
|
|
strokeWidth = 2.dp, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|