Revert changes on room list filters being hidden

This commit is contained in:
ganfra 2026-02-04 11:34:43 +01:00
parent d51253eb74
commit 53e82c0116
6 changed files with 13 additions and 34 deletions

View file

@ -11,5 +11,4 @@ package io.element.android.features.home.impl.filters
sealed interface RoomListFiltersEvent { sealed interface RoomListFiltersEvent {
data class ToggleFilter(val filter: RoomListFilter) : RoomListFiltersEvent data class ToggleFilter(val filter: RoomListFilter) : RoomListFiltersEvent
data object ClearSelectedFilters : RoomListFiltersEvent data object ClearSelectedFilters : RoomListFiltersEvent
data class SetHiddenFilter(val filters: Set<RoomListFilter>): RoomListFiltersEvent
} }

View file

@ -30,9 +30,6 @@ class RoomListFiltersPresenter(
is RoomListFiltersEvent.ToggleFilter -> { is RoomListFiltersEvent.ToggleFilter -> {
filterSelectionStrategy.toggle(event.filter) filterSelectionStrategy.toggle(event.filter)
} }
is RoomListFiltersEvent.SetHiddenFilter -> {
filterSelectionStrategy.setHiddenFilters(event.filters)
}
} }
} }

View file

@ -15,29 +15,19 @@ import kotlinx.coroutines.flow.MutableStateFlow
@ContributesBinding(SessionScope::class) @ContributesBinding(SessionScope::class)
class DefaultFilterSelectionStrategy : FilterSelectionStrategy { class DefaultFilterSelectionStrategy : FilterSelectionStrategy {
private val _selectedFilters = LinkedHashSet<RoomListFilter>() private val selectedFilters = LinkedHashSet<RoomListFilter>()
private val hiddenFilters = LinkedHashSet<RoomListFilter>()
private val selectedFilters
get() = _selectedFilters - hiddenFilters
private val availableFilters private val availableFilters
get() = RoomListFilter.entries.toSet() - hiddenFilters get() = RoomListFilter.entries.toSet()
override val filterSelectionStates = MutableStateFlow(buildFilters()) override val filterSelectionStates = MutableStateFlow(buildFilters())
override fun setHiddenFilters(filters: Set<RoomListFilter>) {
hiddenFilters.clear()
hiddenFilters.addAll(filters)
filterSelectionStates.value = buildFilters()
}
override fun select(filter: RoomListFilter) { override fun select(filter: RoomListFilter) {
_selectedFilters.add(filter) selectedFilters.add(filter)
filterSelectionStates.value = buildFilters() filterSelectionStates.value = buildFilters()
} }
override fun deselect(filter: RoomListFilter) { override fun deselect(filter: RoomListFilter) {
_selectedFilters.remove(filter) selectedFilters.remove(filter)
filterSelectionStates.value = buildFilters() filterSelectionStates.value = buildFilters()
} }
@ -46,7 +36,7 @@ class DefaultFilterSelectionStrategy : FilterSelectionStrategy {
} }
override fun clear() { override fun clear() {
_selectedFilters.clear() selectedFilters.clear()
filterSelectionStates.value = buildFilters() filterSelectionStates.value = buildFilters()
} }

View file

@ -13,8 +13,6 @@ import kotlinx.coroutines.flow.StateFlow
interface FilterSelectionStrategy { interface FilterSelectionStrategy {
val filterSelectionStates: StateFlow<Set<FilterSelectionState>> val filterSelectionStates: StateFlow<Set<FilterSelectionState>>
fun setHiddenFilters(filters: Set<RoomListFilter>)
fun select(filter: RoomListFilter) fun select(filter: RoomListFilter)
fun deselect(filter: RoomListFilter) fun deselect(filter: RoomListFilter)
fun isSelected(filter: RoomListFilter): Boolean fun isSelected(filter: RoomListFilter): Boolean

View file

@ -36,6 +36,7 @@ import io.element.android.features.home.impl.filters.into
import io.element.android.features.home.impl.search.RoomListSearchEvent import io.element.android.features.home.impl.search.RoomListSearchEvent
import io.element.android.features.home.impl.search.RoomListSearchState import io.element.android.features.home.impl.search.RoomListSearchState
import io.element.android.features.home.impl.spacefilters.SpaceFiltersState import io.element.android.features.home.impl.spacefilters.SpaceFiltersState
import io.element.android.features.home.impl.spacefilters.into
import io.element.android.features.home.impl.spacefilters.selectedFilter import io.element.android.features.home.impl.spacefilters.selectedFilter
import io.element.android.features.invite.api.SeenInvitesStore import io.element.android.features.invite.api.SeenInvitesStore
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.AcceptInvite import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.AcceptInvite
@ -159,20 +160,9 @@ class RoomListPresenter(
} }
} }
LaunchedEffect(spaceFiltersState.selectedFilter()) {
val hiddenFilters = if (spaceFiltersState is SpaceFiltersState.Selected) {
setOf(People, Rooms)
} else {
emptySet()
}
filtersState.eventSink(RoomListFiltersEvent.SetHiddenFilter(hiddenFilters))
}
LaunchedEffect(filtersState.filterSelectionStates, spaceFiltersState.selectedFilter()) { LaunchedEffect(filtersState.filterSelectionStates, spaceFiltersState.selectedFilter()) {
val selectedFilters = filtersState.selectedFilters().map { filter -> filter.into() } val selectedFilters = filtersState.selectedFilters().map { filter -> filter.into() }
val selectedSpaceFilter = when (spaceFiltersState) { val selectedSpaceFilter = spaceFiltersState.selectedFilter().into()
is SpaceFiltersState.Selected -> RoomListFilter.Identifiers(spaceFiltersState.selectedFilter.descendants)
else -> null
}
val allFilters = RoomListFilter.All(selectedFilters + listOfNotNull(selectedSpaceFilter)) val allFilters = RoomListFilter.All(selectedFilters + listOfNotNull(selectedSpaceFilter))
roomListDataSource.updateFilter(allFilters) roomListDataSource.updateFilter(allFilters)
} }

View file

@ -8,7 +8,7 @@
package io.element.android.features.home.impl.spacefilters package io.element.android.features.home.impl.spacefilters
import androidx.compose.foundation.text.input.TextFieldState import androidx.compose.foundation.text.input.TextFieldState
import io.element.android.features.home.impl.filters.RoomListFilter import io.element.android.libraries.matrix.api.roomlist.RoomListFilter
import io.element.android.libraries.matrix.api.spaces.SpaceServiceFilter import io.element.android.libraries.matrix.api.spaces.SpaceServiceFilter
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableList
@ -48,3 +48,8 @@ fun SpaceFiltersState.selectedFilter(): SpaceServiceFilter? {
else -> null else -> null
} }
} }
fun SpaceServiceFilter?.into(): RoomListFilter? {
return this?.let { RoomListFilter.Identifiers(descendants) }
}