Revert changes on room list filters being hidden
This commit is contained in:
parent
23498bbaee
commit
aa079677ae
6 changed files with 13 additions and 34 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,9 +30,6 @@ class RoomListFiltersPresenter(
|
|||
is RoomListFiltersEvent.ToggleFilter -> {
|
||||
filterSelectionStrategy.toggle(event.filter)
|
||||
}
|
||||
is RoomListFiltersEvent.SetHiddenFilter -> {
|
||||
filterSelectionStrategy.setHiddenFilters(event.filters)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) }
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue