RoomListFilters : fix visibility and adjust ui

This commit is contained in:
ganfra 2024-02-21 11:37:44 +01:00
parent 96fd4ac0e4
commit 8dd135f8f3
5 changed files with 14 additions and 13 deletions

View file

@ -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(

View file

@ -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 = {}

View file

@ -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 ->

View file

@ -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,
),
) )
} }

View file

@ -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,