mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 12:07:28 +00:00
RoomSelectEvents -> RoomSelectEvent
This commit is contained in:
+4
-4
@@ -10,8 +10,8 @@ package io.element.android.libraries.roomselect.impl
|
||||
|
||||
import io.element.android.libraries.matrix.ui.model.SelectRoomInfo
|
||||
|
||||
sealed interface RoomSelectEvents {
|
||||
data class ToggleSelectedRoom(val room: SelectRoomInfo) : RoomSelectEvents
|
||||
data object ToggleSearchActive : RoomSelectEvents
|
||||
data class UpdateVisibleRange(val range: IntRange) : RoomSelectEvents
|
||||
sealed interface RoomSelectEvent {
|
||||
data class ToggleSelectedRoom(val room: SelectRoomInfo) : RoomSelectEvent
|
||||
data object ToggleSearchActive : RoomSelectEvent
|
||||
data class UpdateVisibleRange(val range: IntRange) : RoomSelectEvent
|
||||
}
|
||||
+4
-4
@@ -67,9 +67,9 @@ class RoomSelectPresenter(
|
||||
}
|
||||
}
|
||||
|
||||
fun handleEvent(event: RoomSelectEvents) {
|
||||
fun handleEvent(event: RoomSelectEvent) {
|
||||
when (event) {
|
||||
is RoomSelectEvents.ToggleSelectedRoom -> {
|
||||
is RoomSelectEvent.ToggleSelectedRoom -> {
|
||||
val index = selectedRooms.indexOfFirst { it.roomId == event.room.roomId }
|
||||
selectedRooms = if (index >= 0) {
|
||||
selectedRooms.removeAt(index)
|
||||
@@ -77,8 +77,8 @@ class RoomSelectPresenter(
|
||||
selectedRooms.add(event.room)
|
||||
}
|
||||
}
|
||||
RoomSelectEvents.ToggleSearchActive -> isSearchActive = !isSearchActive
|
||||
is RoomSelectEvents.UpdateVisibleRange -> coroutineScope.launch {
|
||||
RoomSelectEvent.ToggleSearchActive -> isSearchActive = !isSearchActive
|
||||
is RoomSelectEvent.UpdateVisibleRange -> coroutineScope.launch {
|
||||
dataSource.updateVisibleRange(event.range)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,5 +20,5 @@ data class RoomSelectState(
|
||||
val searchQuery: TextFieldState,
|
||||
val isSearchActive: Boolean,
|
||||
val selectedRooms: ImmutableList<SelectRoomInfo>,
|
||||
val eventSink: (RoomSelectEvents) -> Unit
|
||||
val eventSink: (RoomSelectEvent) -> Unit
|
||||
)
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ internal fun aRoomSelectState(
|
||||
searchQuery: String = "",
|
||||
isSearchActive: Boolean = false,
|
||||
selectedRooms: ImmutableList<SelectRoomInfo> = persistentListOf(),
|
||||
eventSink: (RoomSelectEvents) -> Unit = {},
|
||||
eventSink: (RoomSelectEvent) -> Unit = {},
|
||||
) = RoomSelectState(
|
||||
mode = mode,
|
||||
resultState = resultState,
|
||||
|
||||
+6
-6
@@ -72,7 +72,7 @@ fun RoomSelectView(
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
fun onRoomRemoved(roomInfo: SelectRoomInfo) {
|
||||
state.eventSink(RoomSelectEvents.ToggleSelectedRoom(roomInfo))
|
||||
state.eventSink(RoomSelectEvent.ToggleSelectedRoom(roomInfo))
|
||||
}
|
||||
|
||||
@Composable
|
||||
@@ -87,7 +87,7 @@ fun RoomSelectView(
|
||||
var canHandleBack by remember { mutableStateOf(true) }
|
||||
fun onBackButton(state: RoomSelectState) {
|
||||
if (state.isSearchActive) {
|
||||
state.eventSink(RoomSelectEvents.ToggleSearchActive)
|
||||
state.eventSink(RoomSelectEvent.ToggleSearchActive)
|
||||
} else if (canHandleBack) {
|
||||
canHandleBack = false
|
||||
onDismiss()
|
||||
@@ -101,7 +101,7 @@ fun RoomSelectView(
|
||||
|
||||
val lazyListState = rememberLazyListState()
|
||||
OnVisibleRangeChangeEffect(lazyListState) { visibleRange ->
|
||||
state.eventSink(RoomSelectEvents.UpdateVisibleRange(visibleRange))
|
||||
state.eventSink(RoomSelectEvent.UpdateVisibleRange(visibleRange))
|
||||
}
|
||||
|
||||
Scaffold(
|
||||
@@ -138,7 +138,7 @@ fun RoomSelectView(
|
||||
placeHolderTitle = stringResource(CommonStrings.action_search),
|
||||
queryState = state.searchQuery,
|
||||
active = state.isSearchActive,
|
||||
onActiveChange = { state.eventSink(RoomSelectEvents.ToggleSearchActive) },
|
||||
onActiveChange = { state.eventSink(RoomSelectEvent.ToggleSearchActive) },
|
||||
resultState = state.resultState,
|
||||
showBackButton = false,
|
||||
) { summaries ->
|
||||
@@ -154,7 +154,7 @@ fun RoomSelectView(
|
||||
roomSummary,
|
||||
isSelected = state.selectedRooms.any { it.roomId == roomSummary.roomId },
|
||||
onSelection = { roomSummary ->
|
||||
state.eventSink(RoomSelectEvents.ToggleSelectedRoom(roomSummary))
|
||||
state.eventSink(RoomSelectEvent.ToggleSelectedRoom(roomSummary))
|
||||
}
|
||||
)
|
||||
HorizontalDivider(modifier = Modifier.fillMaxWidth())
|
||||
@@ -177,7 +177,7 @@ fun RoomSelectView(
|
||||
roomSummary,
|
||||
isSelected = state.selectedRooms.any { it.roomId == roomSummary.roomId },
|
||||
onSelection = { roomSummary ->
|
||||
state.eventSink(RoomSelectEvents.ToggleSelectedRoom(roomSummary))
|
||||
state.eventSink(RoomSelectEvent.ToggleSelectedRoom(roomSummary))
|
||||
}
|
||||
)
|
||||
HorizontalDivider(modifier = Modifier.fillMaxWidth())
|
||||
|
||||
+6
-6
@@ -57,9 +57,9 @@ class RoomSelectPresenterTest {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(RoomSelectEvents.ToggleSearchActive)
|
||||
initialState.eventSink(RoomSelectEvent.ToggleSearchActive)
|
||||
assertThat(awaitItem().isSearchActive).isTrue()
|
||||
initialState.eventSink(RoomSelectEvents.ToggleSearchActive)
|
||||
initialState.eventSink(RoomSelectEvent.ToggleSearchActive)
|
||||
assertThat(awaitItem().isSearchActive).isFalse()
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,7 @@ class RoomSelectPresenterTest {
|
||||
// Do not compare the lambda because they will be different. So copy the lambda from expectedRoomSummary to result
|
||||
val result = (awaitItem().resultState as SearchBarResultState.Results).results
|
||||
assertThat(result).isEqualTo(listOf(expectedRoomInfo))
|
||||
initialState.eventSink(RoomSelectEvents.ToggleSearchActive)
|
||||
initialState.eventSink(RoomSelectEvent.ToggleSearchActive)
|
||||
skipItems(1)
|
||||
initialState.searchQuery.setTextAndPlaceCursorAtEnd("string not contained")
|
||||
assertThat(
|
||||
@@ -117,9 +117,9 @@ class RoomSelectPresenterTest {
|
||||
}.test {
|
||||
val initialState = awaitItem()
|
||||
val roomInfo = roomSummary.toSelectRoomInfo()
|
||||
initialState.eventSink(RoomSelectEvents.ToggleSelectedRoom(roomInfo))
|
||||
initialState.eventSink(RoomSelectEvent.ToggleSelectedRoom(roomInfo))
|
||||
assertThat(awaitItem().selectedRooms).isEqualTo(persistentListOf(roomInfo))
|
||||
initialState.eventSink(RoomSelectEvents.ToggleSelectedRoom(roomInfo))
|
||||
initialState.eventSink(RoomSelectEvent.ToggleSelectedRoom(roomInfo))
|
||||
assertThat(awaitItem().selectedRooms).isEmpty()
|
||||
cancel()
|
||||
}
|
||||
@@ -146,7 +146,7 @@ class RoomSelectPresenterTest {
|
||||
skipItems(1)
|
||||
|
||||
// UpdateVisibleRange near end should trigger loadMore
|
||||
initialState.eventSink(RoomSelectEvents.UpdateVisibleRange(IntRange(0, 9)))
|
||||
initialState.eventSink(RoomSelectEvent.UpdateVisibleRange(IntRange(0, 9)))
|
||||
// Give time for the coroutine to complete
|
||||
testScheduler.advanceUntilIdle()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user