Revert changes on room list filters being hidden

This commit is contained in:
ganfra 2026-02-04 11:34:43 +01:00
parent 23498bbaee
commit aa079677ae
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 {
data class ToggleFilter(val filter: RoomListFilter) : RoomListFiltersEvent
data object ClearSelectedFilters : RoomListFiltersEvent
data class SetHiddenFilter(val filters: Set<RoomListFilter>): RoomListFiltersEvent
}

View file

@ -30,9 +30,6 @@ class RoomListFiltersPresenter(
is RoomListFiltersEvent.ToggleFilter -> {
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)
class DefaultFilterSelectionStrategy : FilterSelectionStrategy {
private val _selectedFilters = LinkedHashSet<RoomListFilter>()
private val hiddenFilters = LinkedHashSet<RoomListFilter>()
private val selectedFilters
get() = _selectedFilters - hiddenFilters
private val selectedFilters = LinkedHashSet<RoomListFilter>()
private val availableFilters
get() = RoomListFilter.entries.toSet() - hiddenFilters
get() = RoomListFilter.entries.toSet()
override val filterSelectionStates = MutableStateFlow(buildFilters())
override fun setHiddenFilters(filters: Set<RoomListFilter>) {
hiddenFilters.clear()
hiddenFilters.addAll(filters)
filterSelectionStates.value = buildFilters()
}
override fun select(filter: RoomListFilter) {
_selectedFilters.add(filter)
selectedFilters.add(filter)
filterSelectionStates.value = buildFilters()
}
override fun deselect(filter: RoomListFilter) {
_selectedFilters.remove(filter)
selectedFilters.remove(filter)
filterSelectionStates.value = buildFilters()
}
@ -46,7 +36,7 @@ class DefaultFilterSelectionStrategy : FilterSelectionStrategy {
}
override fun clear() {
_selectedFilters.clear()
selectedFilters.clear()
filterSelectionStates.value = buildFilters()
}

View file

@ -13,8 +13,6 @@ import kotlinx.coroutines.flow.StateFlow
interface FilterSelectionStrategy {
val filterSelectionStates: StateFlow<Set<FilterSelectionState>>
fun setHiddenFilters(filters: Set<RoomListFilter>)
fun select(filter: RoomListFilter)
fun deselect(filter: RoomListFilter)
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.RoomListSearchState
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.invite.api.SeenInvitesStore
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()) {
val selectedFilters = filtersState.selectedFilters().map { filter -> filter.into() }
val selectedSpaceFilter = when (spaceFiltersState) {
is SpaceFiltersState.Selected -> RoomListFilter.Identifiers(spaceFiltersState.selectedFilter.descendants)
else -> null
}
val selectedSpaceFilter = spaceFiltersState.selectedFilter().into()
val allFilters = RoomListFilter.All(selectedFilters + listOfNotNull(selectedSpaceFilter))
roomListDataSource.updateFilter(allFilters)
}

View file

@ -8,7 +8,7 @@
package io.element.android.features.home.impl.spacefilters
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 kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
@ -48,3 +48,8 @@ fun SpaceFiltersState.selectedFilter(): SpaceServiceFilter? {
else -> null
}
}
fun SpaceServiceFilter?.into(): RoomListFilter? {
return this?.let { RoomListFilter.Identifiers(descendants) }
}