RoomDirectoryEvents -> RoomDirectoryEvent

This commit is contained in:
Benoit Marty
2026-08-25 10:17:21 +02:00
parent 15569ef3e8
commit 4e9ec1b631
7 changed files with 17 additions and 17 deletions
@@ -8,7 +8,7 @@
package io.element.android.features.roomdirectory.impl.root package io.element.android.features.roomdirectory.impl.root
sealed interface RoomDirectoryEvents { sealed interface RoomDirectoryEvent {
data class Search(val query: String) : RoomDirectoryEvents data class Search(val query: String) : RoomDirectoryEvent
data object LoadMore : RoomDirectoryEvents data object LoadMore : RoomDirectoryEvent
} }
@@ -63,12 +63,12 @@ class RoomDirectoryPresenter(
loadingMore = false loadingMore = false
} }
} }
fun handleEvent(event: RoomDirectoryEvents) { fun handleEvent(event: RoomDirectoryEvent) {
when (event) { when (event) {
RoomDirectoryEvents.LoadMore -> { RoomDirectoryEvent.LoadMore -> {
loadingMore = true loadingMore = true
} }
is RoomDirectoryEvents.Search -> { is RoomDirectoryEvent.Search -> {
searchQuery = event.query searchQuery = event.query
} }
} }
@@ -15,7 +15,7 @@ data class RoomDirectoryState(
val query: String, val query: String,
val roomDescriptions: ImmutableList<RoomDescription>, val roomDescriptions: ImmutableList<RoomDescription>,
val displayLoadMoreIndicator: Boolean, val displayLoadMoreIndicator: Boolean,
val eventSink: (RoomDirectoryEvents) -> Unit val eventSink: (RoomDirectoryEvent) -> Unit
) { ) {
val displayEmptyState = roomDescriptions.isEmpty() && !displayLoadMoreIndicator val displayEmptyState = roomDescriptions.isEmpty() && !displayLoadMoreIndicator
} }
@@ -35,7 +35,7 @@ fun aRoomDirectoryState(
query: String = "", query: String = "",
displayLoadMoreIndicator: Boolean = false, displayLoadMoreIndicator: Boolean = false,
roomDescriptions: ImmutableList<RoomDescription> = persistentListOf(), roomDescriptions: ImmutableList<RoomDescription> = persistentListOf(),
eventSink: (RoomDirectoryEvents) -> Unit = {}, eventSink: (RoomDirectoryEvent) -> Unit = {},
) = RoomDirectoryState( ) = RoomDirectoryState(
query = query, query = query,
roomDescriptions = roomDescriptions, roomDescriptions = roomDescriptions,
@@ -107,7 +107,7 @@ private fun RoomDirectoryContent(
Column(modifier = modifier) { Column(modifier = modifier) {
SearchTextField( SearchTextField(
query = state.query, query = state.query,
onQueryChange = { state.eventSink(RoomDirectoryEvents.Search(it)) }, onQueryChange = { state.eventSink(RoomDirectoryEvent.Search(it)) },
placeholder = stringResource(id = CommonStrings.action_search), placeholder = stringResource(id = CommonStrings.action_search),
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
) )
@@ -116,7 +116,7 @@ private fun RoomDirectoryContent(
displayLoadMoreIndicator = state.displayLoadMoreIndicator, displayLoadMoreIndicator = state.displayLoadMoreIndicator,
displayEmptyState = state.displayEmptyState, displayEmptyState = state.displayEmptyState,
onResultClick = onResultClick, onResultClick = onResultClick,
onReachedLoadMore = { state.eventSink(RoomDirectoryEvents.LoadMore) }, onReachedLoadMore = { state.eventSink(RoomDirectoryEvent.LoadMore) },
) )
} }
} }
@@ -91,7 +91,7 @@ class RoomDirectoryPresenterTest {
val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService) val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService)
presenter.test { presenter.test {
awaitItem().also { state -> awaitItem().also { state ->
state.eventSink(RoomDirectoryEvents.Search("test")) state.eventSink(RoomDirectoryEvent.Search("test"))
} }
awaitItem().also { state -> awaitItem().also { state ->
assertThat(state.query).isEqualTo("test") assertThat(state.query).isEqualTo("test")
@@ -112,7 +112,7 @@ class RoomDirectoryPresenterTest {
val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService) val presenter = createRoomDirectoryPresenter(roomDirectoryService = roomDirectoryService)
presenter.test { presenter.test {
awaitItem().also { state -> awaitItem().also { state ->
state.eventSink(RoomDirectoryEvents.LoadMore) state.eventSink(RoomDirectoryEvent.LoadMore)
} }
advanceUntilIdle() advanceUntilIdle()
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
@@ -30,7 +30,7 @@ import org.junit.Test
class RoomDirectoryViewTest : RobolectricTest() { class RoomDirectoryViewTest : RobolectricTest() {
@Test @Test
fun `typing text in search field emits the expected Event`() = runAndroidComposeUiTest { fun `typing text in search field emits the expected Event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<RoomDirectoryEvents>() val eventsRecorder = EventsRecorder<RoomDirectoryEvent>()
setRoomDirectoryView( setRoomDirectoryView(
state = aRoomDirectoryState( state = aRoomDirectoryState(
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -39,12 +39,12 @@ class RoomDirectoryViewTest : RobolectricTest() {
onNodeWithTag(TestTags.searchTextField.value).performTextInput( onNodeWithTag(TestTags.searchTextField.value).performTextInput(
text = "Test" text = "Test"
) )
eventsRecorder.assertSingle(RoomDirectoryEvents.Search("Test")) eventsRecorder.assertSingle(RoomDirectoryEvent.Search("Test"))
} }
@Test @Test
fun `clicking on room item then onResultClick lambda is called once`() = runAndroidComposeUiTest { fun `clicking on room item then onResultClick lambda is called once`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<RoomDirectoryEvents>() val eventsRecorder = EventsRecorder<RoomDirectoryEvent>()
val state = aRoomDirectoryState( val state = aRoomDirectoryState(
roomDescriptions = aRoomDescriptionList(), roomDescriptions = aRoomDescriptionList(),
eventSink = eventsRecorder, eventSink = eventsRecorder,
@@ -61,13 +61,13 @@ class RoomDirectoryViewTest : RobolectricTest() {
@Test @Test
fun `composing load more indicator emits expected Event`() = runAndroidComposeUiTest { fun `composing load more indicator emits expected Event`() = runAndroidComposeUiTest {
val eventsRecorder = EventsRecorder<RoomDirectoryEvents>() val eventsRecorder = EventsRecorder<RoomDirectoryEvent>()
val state = aRoomDirectoryState( val state = aRoomDirectoryState(
displayLoadMoreIndicator = true, displayLoadMoreIndicator = true,
eventSink = eventsRecorder, eventSink = eventsRecorder,
) )
setRoomDirectoryView(state = state) setRoomDirectoryView(state = state)
eventsRecorder.assertSingle(RoomDirectoryEvents.LoadMore) eventsRecorder.assertSingle(RoomDirectoryEvent.LoadMore)
} }
} }