RoomListFilters : fix visibility and adjust ui
This commit is contained in:
parent
96fd4ac0e4
commit
8dd135f8f3
5 changed files with 14 additions and 13 deletions
|
|
@ -44,6 +44,8 @@ data class RoomListState(
|
||||||
val displayMigrationStatus: Boolean,
|
val displayMigrationStatus: Boolean,
|
||||||
val eventSink: (RoomListEvents) -> Unit,
|
val eventSink: (RoomListEvents) -> Unit,
|
||||||
) {
|
) {
|
||||||
|
val displayFilters = filtersState.isFeatureEnabled && !displayMigrationStatus
|
||||||
|
|
||||||
sealed interface ContextMenu {
|
sealed interface ContextMenu {
|
||||||
data object Hidden : ContextMenu
|
data object Hidden : ContextMenu
|
||||||
data class Shown(
|
data class Shown(
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ open class RoomListStateProvider : PreviewParameterProvider<RoomListState> {
|
||||||
aRoomListState().copy(roomList = AsyncData.Loading(prevData = RoomListRoomSummaryFactory.createFakeList())),
|
aRoomListState().copy(roomList = AsyncData.Loading(prevData = RoomListRoomSummaryFactory.createFakeList())),
|
||||||
aRoomListState().copy(matrixUser = null, displayMigrationStatus = true),
|
aRoomListState().copy(matrixUser = null, displayMigrationStatus = true),
|
||||||
aRoomListState().copy(searchState = aRoomListSearchState(isSearchActive = true, query = "Test")),
|
aRoomListState().copy(searchState = aRoomListSearchState(isSearchActive = true, query = "Test")),
|
||||||
|
aRoomListState().copy(filtersState = aRoomListFiltersState(isFeatureEnabled = true)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,7 +65,7 @@ internal fun aRoomListState() = RoomListState(
|
||||||
invitesState = InvitesState.NoInvites,
|
invitesState = InvitesState.NoInvites,
|
||||||
contextMenu = RoomListState.ContextMenu.Hidden,
|
contextMenu = RoomListState.ContextMenu.Hidden,
|
||||||
leaveRoomState = aLeaveRoomState(),
|
leaveRoomState = aLeaveRoomState(),
|
||||||
filtersState = aRoomListFiltersState(),
|
filtersState = aRoomListFiltersState(isFeatureEnabled = false),
|
||||||
searchState = aRoomListSearchState(),
|
searchState = aRoomListSearchState(),
|
||||||
displayMigrationStatus = false,
|
displayMigrationStatus = false,
|
||||||
eventSink = {}
|
eventSink = {}
|
||||||
|
|
|
||||||
|
|
@ -216,7 +216,9 @@ private fun RoomListContent(
|
||||||
scrollBehavior = scrollBehavior,
|
scrollBehavior = scrollBehavior,
|
||||||
displayMenuItems = !state.displayMigrationStatus,
|
displayMenuItems = !state.displayMigrationStatus,
|
||||||
)
|
)
|
||||||
RoomListFiltersView(state = state.filtersState)
|
if (state.displayFilters) {
|
||||||
|
RoomListFiltersView(state = state.filtersState)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
content = { padding ->
|
content = { padding ->
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,6 @@ class RoomListFiltersStateProvider : PreviewParameterProvider<RoomListFiltersSta
|
||||||
selectedFilters = persistentListOf(RoomListFilter.Rooms, RoomListFilter.Favourites),
|
selectedFilters = persistentListOf(RoomListFilter.Rooms, RoomListFilter.Favourites),
|
||||||
unselectedFilters = persistentListOf(RoomListFilter.Unread),
|
unselectedFilters = persistentListOf(RoomListFilter.Unread),
|
||||||
),
|
),
|
||||||
aRoomListFiltersState(
|
|
||||||
isFeatureEnabled = false,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyListScope
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
|
@ -31,6 +32,7 @@ import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material3.FilterChip
|
import androidx.compose.material3.FilterChip
|
||||||
import androidx.compose.material3.FilterChipDefaults
|
import androidx.compose.material3.FilterChipDefaults
|
||||||
|
import androidx.compose.material3.minimumInteractiveComponentSize
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -48,18 +50,12 @@ 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.IconButton
|
||||||
import io.element.android.libraries.designsystem.theme.components.Text
|
import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import timber.log.Timber
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RoomListFiltersView(
|
fun RoomListFiltersView(
|
||||||
state: RoomListFiltersState,
|
state: RoomListFiltersState,
|
||||||
modifier: Modifier = Modifier
|
modifier: Modifier = Modifier
|
||||||
) {
|
) {
|
||||||
if (!state.isFeatureEnabled) {
|
|
||||||
Timber.d("RoomListFiltersView: Feature is disabled, hide the view")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fun onClearFiltersClicked() {
|
fun onClearFiltersClicked() {
|
||||||
state.eventSink(RoomListFiltersEvents.ClearSelectedFilters)
|
state.eventSink(RoomListFiltersEvents.ClearSelectedFilters)
|
||||||
}
|
}
|
||||||
|
|
@ -71,6 +67,7 @@ fun RoomListFiltersView(
|
||||||
val startPadding = if (state.showClearFilterButton) 4.dp else 16.dp
|
val startPadding = if (state.showClearFilterButton) 4.dp else 16.dp
|
||||||
Row(
|
Row(
|
||||||
modifier = modifier.padding(start = startPadding, end = 16.dp),
|
modifier = modifier.padding(start = startPadding, end = 16.dp),
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
AnimatedVisibility(visible = state.showClearFilterButton) {
|
AnimatedVisibility(visible = state.showClearFilterButton) {
|
||||||
RoomListClearFiltersButton(onClick = ::onClearFiltersClicked)
|
RoomListClearFiltersButton(onClick = ::onClearFiltersClicked)
|
||||||
|
|
@ -130,7 +127,7 @@ private fun RoomListClearFiltersButton(
|
||||||
modifier = Modifier.align(Alignment.Center),
|
modifier = Modifier.align(Alignment.Center),
|
||||||
imageVector = CompoundIcons.Close(),
|
imageVector = CompoundIcons.Close(),
|
||||||
tint = ElementTheme.colors.iconOnSolidPrimary,
|
tint = ElementTheme.colors.iconOnSolidPrimary,
|
||||||
contentDescription = null,
|
contentDescription = stringResource(id = io.element.android.libraries.ui.strings.R.string.action_clear),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -146,7 +143,9 @@ private fun RoomListFilterView(
|
||||||
FilterChip(
|
FilterChip(
|
||||||
selected = selected,
|
selected = selected,
|
||||||
onClick = { onClick(roomListFilter) },
|
onClick = { onClick(roomListFilter) },
|
||||||
modifier = modifier,
|
modifier = modifier
|
||||||
|
.minimumInteractiveComponentSize()
|
||||||
|
.height(36.dp),
|
||||||
shape = CircleShape,
|
shape = CircleShape,
|
||||||
colors = FilterChipDefaults.filterChipColors(
|
colors = FilterChipDefaults.filterChipColors(
|
||||||
containerColor = ElementTheme.colors.bgCanvasDefault,
|
containerColor = ElementTheme.colors.bgCanvasDefault,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue