RoomListFiltersEvents -> RoomListFiltersEvent

This commit is contained in:
Benoit Marty
2026-01-27 15:01:57 +01:00
parent c92d34f46a
commit 5eccea5ada
7 changed files with 18 additions and 18 deletions

View File

@@ -8,7 +8,7 @@
package io.element.android.features.home.impl.filters
sealed interface RoomListFiltersEvents {
data class ToggleFilter(val filter: RoomListFilter) : RoomListFiltersEvents
data object ClearSelectedFilters : RoomListFiltersEvents
sealed interface RoomListFiltersEvent {
data class ToggleFilter(val filter: RoomListFilter) : RoomListFiltersEvent
data object ClearSelectedFilters : RoomListFiltersEvent
}

View File

@@ -28,12 +28,12 @@ class RoomListFiltersPresenter(
@Composable
override fun present(): RoomListFiltersState {
fun handleEvent(event: RoomListFiltersEvents) {
fun handleEvent(event: RoomListFiltersEvent) {
when (event) {
RoomListFiltersEvents.ClearSelectedFilters -> {
RoomListFiltersEvent.ClearSelectedFilters -> {
filterSelectionStrategy.clear()
}
is RoomListFiltersEvents.ToggleFilter -> {
is RoomListFiltersEvent.ToggleFilter -> {
filterSelectionStrategy.toggle(event.filter)
}
}

View File

@@ -14,7 +14,7 @@ import kotlinx.collections.immutable.toImmutableList
data class RoomListFiltersState(
val filterSelectionStates: ImmutableList<FilterSelectionState>,
val eventSink: (RoomListFiltersEvents) -> Unit,
val eventSink: (RoomListFiltersEvent) -> Unit,
) {
val hasAnyFilterSelected = filterSelectionStates.any { it.isSelected }

View File

@@ -24,7 +24,7 @@ class RoomListFiltersStateProvider : PreviewParameterProvider<RoomListFiltersSta
fun aRoomListFiltersState(
filterSelectionStates: List<FilterSelectionState> = RoomListFilter.entries.map { FilterSelectionState(it, isSelected = false) },
eventSink: (RoomListFiltersEvents) -> Unit = {},
eventSink: (RoomListFiltersEvent) -> Unit = {},
) = RoomListFiltersState(
filterSelectionStates = filterSelectionStates.toImmutableList(),
eventSink = eventSink,

View File

@@ -60,11 +60,11 @@ fun RoomListFiltersView(
modifier: Modifier = Modifier
) {
fun onClearFiltersClick() {
state.eventSink(RoomListFiltersEvents.ClearSelectedFilters)
state.eventSink(RoomListFiltersEvent.ClearSelectedFilters)
}
fun onToggleFilter(filter: RoomListFilter) {
state.eventSink(RoomListFiltersEvents.ToggleFilter(filter))
state.eventSink(RoomListFiltersEvent.ToggleFilter(filter))
}
var scrollToStart by remember { mutableIntStateOf(0) }

View File

@@ -49,7 +49,7 @@ class RoomListFiltersPresenterTest {
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
awaitItem().eventSink.invoke(RoomListFiltersEvents.ToggleFilter(RoomListFilter.Rooms))
awaitItem().eventSink.invoke(RoomListFiltersEvent.ToggleFilter(RoomListFilter.Rooms))
awaitLastSequentialItem().let { state ->
assertThat(state.hasAnyFilterSelected).isTrue()
@@ -66,7 +66,7 @@ class RoomListFiltersPresenterTest {
assertThat(roomListCurrentFilter.filters).containsExactly(
MatrixRoomListFilter.Category.Group,
)
state.eventSink.invoke(RoomListFiltersEvents.ToggleFilter(RoomListFilter.Rooms))
state.eventSink.invoke(RoomListFiltersEvent.ToggleFilter(RoomListFilter.Rooms))
}
awaitLastSequentialItem().let { state ->
assertThat(state.hasAnyFilterSelected).isFalse()
@@ -91,10 +91,10 @@ class RoomListFiltersPresenterTest {
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
awaitItem().eventSink.invoke(RoomListFiltersEvents.ToggleFilter(RoomListFilter.Rooms))
awaitItem().eventSink.invoke(RoomListFiltersEvent.ToggleFilter(RoomListFilter.Rooms))
awaitLastSequentialItem().let { state ->
assertThat(state.hasAnyFilterSelected).isTrue()
state.eventSink.invoke(RoomListFiltersEvents.ClearSelectedFilters)
state.eventSink.invoke(RoomListFiltersEvent.ClearSelectedFilters)
}
awaitLastSequentialItem().let { state ->
assertThat(state.hasAnyFilterSelected).isFalse()

View File

@@ -27,7 +27,7 @@ class RoomListFiltersViewTest {
@Test
fun `clicking on filters generates expected Event`() {
val eventsRecorder = EventsRecorder<RoomListFiltersEvents>()
val eventsRecorder = EventsRecorder<RoomListFiltersEvent>()
rule.setContent {
RoomListFiltersView(
state = aRoomListFiltersState(eventSink = eventsRecorder),
@@ -36,14 +36,14 @@ class RoomListFiltersViewTest {
rule.clickOn(R.string.screen_roomlist_filter_rooms)
eventsRecorder.assertList(
listOf(
RoomListFiltersEvents.ToggleFilter(RoomListFilter.Rooms),
RoomListFiltersEvent.ToggleFilter(RoomListFilter.Rooms),
)
)
}
@Test
fun `clicking on clear filters generates expected Event`() {
val eventsRecorder = EventsRecorder<RoomListFiltersEvents>()
val eventsRecorder = EventsRecorder<RoomListFiltersEvent>()
rule.setContent {
RoomListFiltersView(
state = aRoomListFiltersState(
@@ -55,7 +55,7 @@ class RoomListFiltersViewTest {
rule.pressTag(TestTags.homeScreenClearFilters.value)
eventsRecorder.assertList(
listOf(
RoomListFiltersEvents.ClearSelectedFilters,
RoomListFiltersEvent.ClearSelectedFilters,
)
)
}