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 eventSink: (RoomListEvents) -> Unit,
) {
val displayFilters = filtersState.isFeatureEnabled && !displayMigrationStatus
sealed interface ContextMenu {
data object Hidden : ContextMenu
data class Shown(

View File

@@ -50,6 +50,7 @@ open class RoomListStateProvider : PreviewParameterProvider<RoomListState> {
aRoomListState().copy(roomList = AsyncData.Loading(prevData = RoomListRoomSummaryFactory.createFakeList())),
aRoomListState().copy(matrixUser = null, displayMigrationStatus = true),
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,
contextMenu = RoomListState.ContextMenu.Hidden,
leaveRoomState = aLeaveRoomState(),
filtersState = aRoomListFiltersState(),
filtersState = aRoomListFiltersState(isFeatureEnabled = false),
searchState = aRoomListSearchState(),
displayMigrationStatus = false,
eventSink = {}

View File

@@ -216,7 +216,9 @@ private fun RoomListContent(
scrollBehavior = scrollBehavior,
displayMenuItems = !state.displayMigrationStatus,
)
RoomListFiltersView(state = state.filtersState)
if (state.displayFilters) {
RoomListFiltersView(state = state.filtersState)
}
}
},
content = { padding ->

View File

@@ -29,9 +29,6 @@ class RoomListFiltersStateProvider : PreviewParameterProvider<RoomListFiltersSta
selectedFilters = persistentListOf(RoomListFilter.Rooms, RoomListFilter.Favourites),
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.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope
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.material3.FilterChip
import androidx.compose.material3.FilterChipDefaults
import androidx.compose.material3.minimumInteractiveComponentSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
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.Text
import kotlinx.collections.immutable.ImmutableList
import timber.log.Timber
@Composable
fun RoomListFiltersView(
state: RoomListFiltersState,
modifier: Modifier = Modifier
) {
if (!state.isFeatureEnabled) {
Timber.d("RoomListFiltersView: Feature is disabled, hide the view")
return
}
fun onClearFiltersClicked() {
state.eventSink(RoomListFiltersEvents.ClearSelectedFilters)
}
@@ -71,6 +67,7 @@ fun RoomListFiltersView(
val startPadding = if (state.showClearFilterButton) 4.dp else 16.dp
Row(
modifier = modifier.padding(start = startPadding, end = 16.dp),
verticalAlignment = Alignment.CenterVertically,
) {
AnimatedVisibility(visible = state.showClearFilterButton) {
RoomListClearFiltersButton(onClick = ::onClearFiltersClicked)
@@ -130,7 +127,7 @@ private fun RoomListClearFiltersButton(
modifier = Modifier.align(Alignment.Center),
imageVector = CompoundIcons.Close(),
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(
selected = selected,
onClick = { onClick(roomListFilter) },
modifier = modifier,
modifier = modifier
.minimumInteractiveComponentSize()
.height(36.dp),
shape = CircleShape,
colors = FilterChipDefaults.filterChipColors(
containerColor = ElementTheme.colors.bgCanvasDefault,