diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersEvent.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersEvent.kt index d4383f2091..a34e91e089 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersEvent.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersEvent.kt @@ -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): RoomListFiltersEvent } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt index 08d6fe4ef0..e73660219c 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/RoomListFiltersPresenter.kt @@ -30,9 +30,6 @@ class RoomListFiltersPresenter( is RoomListFiltersEvent.ToggleFilter -> { filterSelectionStrategy.toggle(event.filter) } - is RoomListFiltersEvent.SetHiddenFilter -> { - filterSelectionStrategy.setHiddenFilters(event.filters) - } } } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt index 707a1c83e3..847dbc2c39 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/DefaultFilterSelectionStrategy.kt @@ -15,29 +15,19 @@ import kotlinx.coroutines.flow.MutableStateFlow @ContributesBinding(SessionScope::class) class DefaultFilterSelectionStrategy : FilterSelectionStrategy { - private val _selectedFilters = LinkedHashSet() - private val hiddenFilters = LinkedHashSet() - private val selectedFilters - get() = _selectedFilters - hiddenFilters - + private val selectedFilters = LinkedHashSet() private val availableFilters - get() = RoomListFilter.entries.toSet() - hiddenFilters + get() = RoomListFilter.entries.toSet() override val filterSelectionStates = MutableStateFlow(buildFilters()) - override fun setHiddenFilters(filters: Set) { - 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() } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/FilterSelectionStrategy.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/FilterSelectionStrategy.kt index 036c786f61..ebdb58fa2b 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/FilterSelectionStrategy.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/filters/selection/FilterSelectionStrategy.kt @@ -13,8 +13,6 @@ import kotlinx.coroutines.flow.StateFlow interface FilterSelectionStrategy { val filterSelectionStates: StateFlow> - - fun setHiddenFilters(filters: Set) fun select(filter: RoomListFilter) fun deselect(filter: RoomListFilter) fun isSelected(filter: RoomListFilter): Boolean diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt index 1a16f2f865..ae016a31c1 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt @@ -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) } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt index 2ff5517455..bef781ae1e 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt @@ -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) } +} +