RoomListSearchEvents -> RoomListSearchEvent

This commit is contained in:
Benoit Marty
2026-01-27 15:04:39 +01:00
parent 5f2ee2dc8c
commit 6cebe2d948
8 changed files with 21 additions and 21 deletions

View File

@@ -29,7 +29,7 @@ import io.element.android.features.announcement.api.Announcement
import io.element.android.features.announcement.api.AnnouncementService
import io.element.android.features.home.impl.datasource.RoomListDataSource
import io.element.android.features.home.impl.filters.RoomListFiltersState
import io.element.android.features.home.impl.search.RoomListSearchEvents
import io.element.android.features.home.impl.search.RoomListSearchEvent
import io.element.android.features.home.impl.search.RoomListSearchState
import io.element.android.features.invite.api.SeenInvitesStore
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.AcceptInvite
@@ -126,7 +126,7 @@ class RoomListPresenter(
RoomListEvent.DismissNewNotificationSoundBanner -> coroutineScope.launch {
announcementService.onAnnouncementDismissed(Announcement.NewNotificationSound)
}
RoomListEvent.ToggleSearchResults -> searchState.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
RoomListEvent.ToggleSearchResults -> searchState.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
is RoomListEvent.ShowContextMenu -> {
coroutineScope.showContextMenu(event, contextMenu)
}

View File

@@ -8,7 +8,7 @@
package io.element.android.features.home.impl.search
sealed interface RoomListSearchEvents {
data object ToggleSearchVisibility : RoomListSearchEvents
data object ClearQuery : RoomListSearchEvents
sealed interface RoomListSearchEvent {
data object ToggleSearchVisibility : RoomListSearchEvent
data object ClearQuery : RoomListSearchEvent
}

View File

@@ -45,12 +45,12 @@ class RoomListSearchPresenter(
dataSource.setSearchQuery(searchQuery.text.toString())
}
fun handleEvent(event: RoomListSearchEvents) {
fun handleEvent(event: RoomListSearchEvent) {
when (event) {
RoomListSearchEvents.ClearQuery -> {
RoomListSearchEvent.ClearQuery -> {
searchQuery.clearText()
}
RoomListSearchEvents.ToggleSearchVisibility -> {
RoomListSearchEvent.ToggleSearchVisibility -> {
isSearchActive = !isSearchActive
searchQuery.clearText()
}

View File

@@ -16,5 +16,5 @@ data class RoomListSearchState(
val isSearchActive: Boolean,
val query: TextFieldState,
val results: ImmutableList<RoomListRoomSummary>,
val eventSink: (RoomListSearchEvents) -> Unit
val eventSink: (RoomListSearchEvent) -> Unit
)

View File

@@ -31,7 +31,7 @@ fun aRoomListSearchState(
isSearchActive: Boolean = false,
query: String = "",
results: ImmutableList<RoomListRoomSummary> = persistentListOf(),
eventSink: (RoomListSearchEvents) -> Unit = { },
eventSink: (RoomListSearchEvent) -> Unit = { },
) = RoomListSearchState(
isSearchActive = isSearchActive,
query = TextFieldState(initialText = query),

View File

@@ -59,7 +59,7 @@ internal fun RoomListSearchView(
modifier: Modifier = Modifier,
) {
BackHandler(enabled = state.isSearchActive) {
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
}
AnimatedVisibility(
@@ -89,7 +89,7 @@ private fun RoomListSearchContent(
val borderColor = MaterialTheme.colorScheme.tertiary
val strokeWidth = 1.dp
fun onBackButtonClick() {
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
}
fun onRoomClick(room: RoomListRoomSummary) {
@@ -127,7 +127,7 @@ private fun RoomListSearchContent(
),
trailingIcon = if (state.query.text.isNotEmpty()) {
@Composable {
IconButton(onClick = { state.eventSink(RoomListSearchEvents.ClearQuery) }) {
IconButton(onClick = { state.eventSink(RoomListSearchEvent.ClearQuery) }) {
Icon(
imageVector = CompoundIcons.Close(),
contentDescription = stringResource(CommonStrings.action_cancel)

View File

@@ -21,7 +21,7 @@ import io.element.android.features.home.impl.datasource.aRoomListRoomSummaryFact
import io.element.android.features.home.impl.filters.RoomListFiltersState
import io.element.android.features.home.impl.filters.aRoomListFiltersState
import io.element.android.features.home.impl.model.createRoomListRoomSummary
import io.element.android.features.home.impl.search.RoomListSearchEvents
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.search.aRoomListSearchState
import io.element.android.features.invite.api.SeenInvitesStore
@@ -327,7 +327,7 @@ class RoomListPresenterTest {
@Test
fun `present - toggle search menu`() = runTest {
val eventRecorder = EventsRecorder<RoomListSearchEvents>()
val eventRecorder = EventsRecorder<RoomListSearchEvent>()
val searchPresenter: Presenter<RoomListSearchState> = Presenter {
aRoomListSearchState(
eventSink = eventRecorder
@@ -343,13 +343,13 @@ class RoomListPresenterTest {
eventRecorder.assertEmpty()
initialState.eventSink(RoomListEvent.ToggleSearchResults)
eventRecorder.assertSingle(
RoomListSearchEvents.ToggleSearchVisibility
RoomListSearchEvent.ToggleSearchVisibility
)
initialState.eventSink(RoomListEvent.ToggleSearchResults)
eventRecorder.assertList(
listOf(
RoomListSearchEvents.ToggleSearchVisibility,
RoomListSearchEvents.ToggleSearchVisibility
RoomListSearchEvent.ToggleSearchVisibility,
RoomListSearchEvent.ToggleSearchVisibility
)
)
}

View File

@@ -48,11 +48,11 @@ class RoomListSearchPresenterTest {
}.test {
awaitItem().let { state ->
assertThat(state.isSearchActive).isFalse()
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
}
awaitItem().let { state ->
assertThat(state.isSearchActive).isTrue()
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
}
awaitItem().let { state ->
assertThat(state.isSearchActive).isFalse()
@@ -82,7 +82,7 @@ class RoomListSearchPresenterTest {
).isEqualTo(
RoomListFilter.NormalizedMatchRoomName("Search")
)
state.eventSink(RoomListSearchEvents.ClearQuery)
state.eventSink(RoomListSearchEvent.ClearQuery)
}
awaitItem().let { state ->
assertThat(state.query.text.toString()).isEmpty()