Merge pull request #2753 from element-hq/feature/bma/removeFlagRoomListFilters
Remove flag RoomListFilters.
This commit is contained in:
commit
6a323d5dde
19 changed files with 25 additions and 59 deletions
|
|
@ -41,7 +41,7 @@ data class RoomListState(
|
||||||
val acceptDeclineInviteState: AcceptDeclineInviteState,
|
val acceptDeclineInviteState: AcceptDeclineInviteState,
|
||||||
val eventSink: (RoomListEvents) -> Unit,
|
val eventSink: (RoomListEvents) -> Unit,
|
||||||
) {
|
) {
|
||||||
val displayFilters = filtersState.isFeatureEnabled && contentState is RoomListContentState.Rooms
|
val displayFilters = contentState is RoomListContentState.Rooms
|
||||||
val displayActions = contentState !is RoomListContentState.Migration
|
val displayActions = contentState !is RoomListContentState.Migration
|
||||||
|
|
||||||
sealed interface ContextMenu {
|
sealed interface ContextMenu {
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,6 @@ open class RoomListStateProvider : PreviewParameterProvider<RoomListState> {
|
||||||
aRoomListState(contentState = aSkeletonContentState()),
|
aRoomListState(contentState = aSkeletonContentState()),
|
||||||
aRoomListState(matrixUser = MatrixUser(userId = UserId("@id:domain")), contentState = aMigrationContentState()),
|
aRoomListState(matrixUser = MatrixUser(userId = UserId("@id:domain")), contentState = aMigrationContentState()),
|
||||||
aRoomListState(searchState = aRoomListSearchState(isSearchActive = true, query = "Test")),
|
aRoomListState(searchState = aRoomListSearchState(isSearchActive = true, query = "Test")),
|
||||||
aRoomListState(filtersState = aRoomListFiltersState(isFeatureEnabled = true)),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,7 +63,7 @@ internal fun aRoomListState(
|
||||||
contextMenu: RoomListState.ContextMenu = RoomListState.ContextMenu.Hidden,
|
contextMenu: RoomListState.ContextMenu = RoomListState.ContextMenu.Hidden,
|
||||||
leaveRoomState: LeaveRoomState = aLeaveRoomState(),
|
leaveRoomState: LeaveRoomState = aLeaveRoomState(),
|
||||||
searchState: RoomListSearchState = aRoomListSearchState(),
|
searchState: RoomListSearchState = aRoomListSearchState(),
|
||||||
filtersState: RoomListFiltersState = aRoomListFiltersState(isFeatureEnabled = false),
|
filtersState: RoomListFiltersState = aRoomListFiltersState(),
|
||||||
contentState: RoomListContentState = aRoomsContentState(),
|
contentState: RoomListContentState = aRoomsContentState(),
|
||||||
acceptDeclineInviteState: AcceptDeclineInviteState = anAcceptDeclineInviteState(),
|
acceptDeclineInviteState: AcceptDeclineInviteState = anAcceptDeclineInviteState(),
|
||||||
eventSink: (RoomListEvents) -> Unit = {}
|
eventSink: (RoomListEvents) -> Unit = {}
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,6 @@ import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import io.element.android.features.roomlist.impl.filters.selection.FilterSelectionStrategy
|
import io.element.android.features.roomlist.impl.filters.selection.FilterSelectionStrategy
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
|
||||||
import io.element.android.libraries.matrix.api.roomlist.RoomListService
|
import io.element.android.libraries.matrix.api.roomlist.RoomListService
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -31,12 +29,10 @@ import io.element.android.libraries.matrix.api.roomlist.RoomListFilter as Matrix
|
||||||
|
|
||||||
class RoomListFiltersPresenter @Inject constructor(
|
class RoomListFiltersPresenter @Inject constructor(
|
||||||
private val roomListService: RoomListService,
|
private val roomListService: RoomListService,
|
||||||
private val featureFlagService: FeatureFlagService,
|
|
||||||
private val filterSelectionStrategy: FilterSelectionStrategy,
|
private val filterSelectionStrategy: FilterSelectionStrategy,
|
||||||
) : Presenter<RoomListFiltersState> {
|
) : Presenter<RoomListFiltersState> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): RoomListFiltersState {
|
override fun present(): RoomListFiltersState {
|
||||||
val isFeatureEnabled by featureFlagService.isFeatureEnabledFlow(FeatureFlags.RoomListFilters).collectAsState(false)
|
|
||||||
val filters by filterSelectionStrategy.filterSelectionStates.collectAsState()
|
val filters by filterSelectionStrategy.filterSelectionStates.collectAsState()
|
||||||
|
|
||||||
fun handleEvents(event: RoomListFiltersEvents) {
|
fun handleEvents(event: RoomListFiltersEvents) {
|
||||||
|
|
@ -50,32 +46,25 @@ class RoomListFiltersPresenter @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(isFeatureEnabled) {
|
|
||||||
if (!isFeatureEnabled) {
|
|
||||||
filterSelectionStrategy.clear()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LaunchedEffect(filters) {
|
LaunchedEffect(filters) {
|
||||||
val allRoomsFilter = MatrixRoomListFilter.All(
|
val allRoomsFilter = MatrixRoomListFilter.All(
|
||||||
filters
|
filters
|
||||||
.filter { it.isSelected }
|
.filter { it.isSelected }
|
||||||
.map { roomListFilter ->
|
.map { roomListFilter ->
|
||||||
when (roomListFilter.filter) {
|
when (roomListFilter.filter) {
|
||||||
RoomListFilter.Rooms -> MatrixRoomListFilter.Category.Group
|
RoomListFilter.Rooms -> MatrixRoomListFilter.Category.Group
|
||||||
RoomListFilter.People -> MatrixRoomListFilter.Category.People
|
RoomListFilter.People -> MatrixRoomListFilter.Category.People
|
||||||
RoomListFilter.Unread -> MatrixRoomListFilter.Unread
|
RoomListFilter.Unread -> MatrixRoomListFilter.Unread
|
||||||
RoomListFilter.Favourites -> MatrixRoomListFilter.Favorite
|
RoomListFilter.Favourites -> MatrixRoomListFilter.Favorite
|
||||||
RoomListFilter.Invites -> MatrixRoomListFilter.Invite
|
RoomListFilter.Invites -> MatrixRoomListFilter.Invite
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
)
|
)
|
||||||
roomListService.allRooms.updateFilter(allRoomsFilter)
|
roomListService.allRooms.updateFilter(allRoomsFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
return RoomListFiltersState(
|
return RoomListFiltersState(
|
||||||
filterSelectionStates = filters.toPersistentList(),
|
filterSelectionStates = filters.toPersistentList(),
|
||||||
isFeatureEnabled = isFeatureEnabled,
|
|
||||||
eventSink = ::handleEvents
|
eventSink = ::handleEvents
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ import kotlinx.collections.immutable.toPersistentList
|
||||||
|
|
||||||
data class RoomListFiltersState(
|
data class RoomListFiltersState(
|
||||||
val filterSelectionStates: ImmutableList<FilterSelectionState>,
|
val filterSelectionStates: ImmutableList<FilterSelectionState>,
|
||||||
val isFeatureEnabled: Boolean,
|
|
||||||
val eventSink: (RoomListFiltersEvents) -> Unit,
|
val eventSink: (RoomListFiltersEvents) -> Unit,
|
||||||
) {
|
) {
|
||||||
val hasAnyFilterSelected = filterSelectionStates.any { it.isSelected }
|
val hasAnyFilterSelected = filterSelectionStates.any { it.isSelected }
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,8 @@ class RoomListFiltersStateProvider : PreviewParameterProvider<RoomListFiltersSta
|
||||||
|
|
||||||
fun aRoomListFiltersState(
|
fun aRoomListFiltersState(
|
||||||
filterSelectionStates: List<FilterSelectionState> = RoomListFilter.entries.map { FilterSelectionState(it, isSelected = false) },
|
filterSelectionStates: List<FilterSelectionState> = RoomListFilter.entries.map { FilterSelectionState(it, isSelected = false) },
|
||||||
isFeatureEnabled: Boolean = true,
|
|
||||||
eventSink: (RoomListFiltersEvents) -> Unit = {},
|
eventSink: (RoomListFiltersEvents) -> Unit = {},
|
||||||
) = RoomListFiltersState(
|
) = RoomListFiltersState(
|
||||||
filterSelectionStates = filterSelectionStates.toImmutableList(),
|
filterSelectionStates = filterSelectionStates.toImmutableList(),
|
||||||
isFeatureEnabled = isFeatureEnabled,
|
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,6 @@ import app.cash.turbine.test
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.roomlist.impl.filters.selection.DefaultFilterSelectionStrategy
|
import io.element.android.features.roomlist.impl.filters.selection.DefaultFilterSelectionStrategy
|
||||||
import io.element.android.features.roomlist.impl.filters.selection.FilterSelectionState
|
import io.element.android.features.roomlist.impl.filters.selection.FilterSelectionState
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
|
||||||
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
|
||||||
import io.element.android.libraries.matrix.api.roomlist.RoomListService
|
import io.element.android.libraries.matrix.api.roomlist.RoomListService
|
||||||
import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService
|
import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService
|
||||||
import io.element.android.tests.testutils.awaitLastSequentialItem
|
import io.element.android.tests.testutils.awaitLastSequentialItem
|
||||||
|
|
@ -120,11 +118,9 @@ private fun filterSelectionState(filter: RoomListFilter, selected: Boolean) = Fi
|
||||||
|
|
||||||
private fun createRoomListFiltersPresenter(
|
private fun createRoomListFiltersPresenter(
|
||||||
roomListService: RoomListService = FakeRoomListService(),
|
roomListService: RoomListService = FakeRoomListService(),
|
||||||
featureFlagService: FeatureFlagService = FakeFeatureFlagService(),
|
|
||||||
): RoomListFiltersPresenter {
|
): RoomListFiltersPresenter {
|
||||||
return RoomListFiltersPresenter(
|
return RoomListFiltersPresenter(
|
||||||
roomListService = roomListService,
|
roomListService = roomListService,
|
||||||
featureFlagService = featureFlagService,
|
|
||||||
filterSelectionStrategy = DefaultFilterSelectionStrategy(),
|
filterSelectionStrategy = DefaultFilterSelectionStrategy(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,13 +75,6 @@ enum class FeatureFlags(
|
||||||
defaultValue = true,
|
defaultValue = true,
|
||||||
isFinished = false,
|
isFinished = false,
|
||||||
),
|
),
|
||||||
RoomListFilters(
|
|
||||||
key = "feature.roomlistfilters",
|
|
||||||
title = "Room list filters",
|
|
||||||
description = "Allow user to filter the room list",
|
|
||||||
defaultValue = true,
|
|
||||||
isFinished = false,
|
|
||||||
),
|
|
||||||
RoomDirectorySearch(
|
RoomDirectorySearch(
|
||||||
key = "feature.roomdirectorysearch",
|
key = "feature.roomdirectorysearch",
|
||||||
title = "Room directory search",
|
title = "Room directory search",
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,6 @@ class StaticFeatureFlagProvider @Inject constructor() :
|
||||||
FeatureFlags.PinUnlock -> true
|
FeatureFlags.PinUnlock -> true
|
||||||
FeatureFlags.Mentions -> true
|
FeatureFlags.Mentions -> true
|
||||||
FeatureFlags.MarkAsUnread -> true
|
FeatureFlags.MarkAsUnread -> true
|
||||||
FeatureFlags.RoomListFilters -> true
|
|
||||||
FeatureFlags.RoomDirectorySearch -> false
|
FeatureFlags.RoomDirectorySearch -> false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,6 @@ class RoomListScreen(
|
||||||
),
|
),
|
||||||
filtersPresenter = RoomListFiltersPresenter(
|
filtersPresenter = RoomListFiltersPresenter(
|
||||||
roomListService = matrixClient.roomListService,
|
roomListService = matrixClient.roomListService,
|
||||||
featureFlagService = featureFlagService,
|
|
||||||
filterSelectionStrategy = DefaultFilterSelectionStrategy(),
|
filterSelectionStrategy = DefaultFilterSelectionStrategy(),
|
||||||
),
|
),
|
||||||
acceptDeclineInvitePresenter = AcceptDeclineInvitePresenter(
|
acceptDeclineInvitePresenter = AcceptDeclineInvitePresenter(
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:1a219527b5d2fc5e581f9e4e5026284a823f0e67b1ec33e12af526b3628d52e6
|
oid sha256:fc44364cd6f9862a9ee949897ca6a6368f4c7fff8f5bf9ec954e4719c6dc2730
|
||||||
size 80571
|
size 90423
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:1a219527b5d2fc5e581f9e4e5026284a823f0e67b1ec33e12af526b3628d52e6
|
oid sha256:fc44364cd6f9862a9ee949897ca6a6368f4c7fff8f5bf9ec954e4719c6dc2730
|
||||||
size 80571
|
size 90423
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:fc44364cd6f9862a9ee949897ca6a6368f4c7fff8f5bf9ec954e4719c6dc2730
|
|
||||||
size 90423
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:873e6d0627246b4e74407020419e5c10dbc1b774c517556d293ef37235002fde
|
oid sha256:40927ec198f59c22edaa1d1c572930f4a78c0ba090326177f67a199eee053e91
|
||||||
size 80631
|
size 90770
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:bb0cf03d1806a0312e10bc4d758102dd0b872d88106464f2112de2dc505e7e7b
|
oid sha256:beee754b1e12d067b73f1e6928f1c966355da43fd73dc29cf6ac9afc3d23c1b9
|
||||||
size 102780
|
size 110781
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:beeee93d72ab3bdd601dd03eec5beb271181a200c11c042b985b9495ded0c320
|
oid sha256:9a90f232c00dc9b7c1e74b16461e6b91b18f5729f771c3a60f4aa68c29513e97
|
||||||
size 82878
|
size 91791
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:beeee93d72ab3bdd601dd03eec5beb271181a200c11c042b985b9495ded0c320
|
oid sha256:9a90f232c00dc9b7c1e74b16461e6b91b18f5729f771c3a60f4aa68c29513e97
|
||||||
size 82878
|
size 91791
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:9a90f232c00dc9b7c1e74b16461e6b91b18f5729f771c3a60f4aa68c29513e97
|
|
||||||
size 91791
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:df8723b2a7cbc1720128a0e8dfdbb10cb82394881ad216ed328b15395302e463
|
oid sha256:fddef14145f5c97e7a088985bf5b255de9098bd0ab35153d05da594428e200cb
|
||||||
size 82322
|
size 91518
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:c6d4e0c7fc8607c6d05997e0c1201311cbe05a69851b9828156969f2ce300246
|
oid sha256:c166fbdc31b616aeffa3e31d11b54c7a5505c9a2c0ba2dcbd5179c4e91072e4b
|
||||||
size 104171
|
size 111706
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue