RoomListSearchEvents -> RoomListSearchEvent
This commit is contained in:
parent
5f2ee2dc8c
commit
6cebe2d948
8 changed files with 21 additions and 21 deletions
|
|
@ -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.announcement.api.AnnouncementService
|
||||||
import io.element.android.features.home.impl.datasource.RoomListDataSource
|
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.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.home.impl.search.RoomListSearchState
|
||||||
import io.element.android.features.invite.api.SeenInvitesStore
|
import io.element.android.features.invite.api.SeenInvitesStore
|
||||||
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.AcceptInvite
|
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.AcceptInvite
|
||||||
|
|
@ -126,7 +126,7 @@ class RoomListPresenter(
|
||||||
RoomListEvent.DismissNewNotificationSoundBanner -> coroutineScope.launch {
|
RoomListEvent.DismissNewNotificationSoundBanner -> coroutineScope.launch {
|
||||||
announcementService.onAnnouncementDismissed(Announcement.NewNotificationSound)
|
announcementService.onAnnouncementDismissed(Announcement.NewNotificationSound)
|
||||||
}
|
}
|
||||||
RoomListEvent.ToggleSearchResults -> searchState.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
|
RoomListEvent.ToggleSearchResults -> searchState.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
|
||||||
is RoomListEvent.ShowContextMenu -> {
|
is RoomListEvent.ShowContextMenu -> {
|
||||||
coroutineScope.showContextMenu(event, contextMenu)
|
coroutineScope.showContextMenu(event, contextMenu)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
package io.element.android.features.home.impl.search
|
package io.element.android.features.home.impl.search
|
||||||
|
|
||||||
sealed interface RoomListSearchEvents {
|
sealed interface RoomListSearchEvent {
|
||||||
data object ToggleSearchVisibility : RoomListSearchEvents
|
data object ToggleSearchVisibility : RoomListSearchEvent
|
||||||
data object ClearQuery : RoomListSearchEvents
|
data object ClearQuery : RoomListSearchEvent
|
||||||
}
|
}
|
||||||
|
|
@ -45,12 +45,12 @@ class RoomListSearchPresenter(
|
||||||
dataSource.setSearchQuery(searchQuery.text.toString())
|
dataSource.setSearchQuery(searchQuery.text.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun handleEvent(event: RoomListSearchEvents) {
|
fun handleEvent(event: RoomListSearchEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
RoomListSearchEvents.ClearQuery -> {
|
RoomListSearchEvent.ClearQuery -> {
|
||||||
searchQuery.clearText()
|
searchQuery.clearText()
|
||||||
}
|
}
|
||||||
RoomListSearchEvents.ToggleSearchVisibility -> {
|
RoomListSearchEvent.ToggleSearchVisibility -> {
|
||||||
isSearchActive = !isSearchActive
|
isSearchActive = !isSearchActive
|
||||||
searchQuery.clearText()
|
searchQuery.clearText()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,5 +16,5 @@ data class RoomListSearchState(
|
||||||
val isSearchActive: Boolean,
|
val isSearchActive: Boolean,
|
||||||
val query: TextFieldState,
|
val query: TextFieldState,
|
||||||
val results: ImmutableList<RoomListRoomSummary>,
|
val results: ImmutableList<RoomListRoomSummary>,
|
||||||
val eventSink: (RoomListSearchEvents) -> Unit
|
val eventSink: (RoomListSearchEvent) -> Unit
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ fun aRoomListSearchState(
|
||||||
isSearchActive: Boolean = false,
|
isSearchActive: Boolean = false,
|
||||||
query: String = "",
|
query: String = "",
|
||||||
results: ImmutableList<RoomListRoomSummary> = persistentListOf(),
|
results: ImmutableList<RoomListRoomSummary> = persistentListOf(),
|
||||||
eventSink: (RoomListSearchEvents) -> Unit = { },
|
eventSink: (RoomListSearchEvent) -> Unit = { },
|
||||||
) = RoomListSearchState(
|
) = RoomListSearchState(
|
||||||
isSearchActive = isSearchActive,
|
isSearchActive = isSearchActive,
|
||||||
query = TextFieldState(initialText = query),
|
query = TextFieldState(initialText = query),
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ internal fun RoomListSearchView(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
BackHandler(enabled = state.isSearchActive) {
|
BackHandler(enabled = state.isSearchActive) {
|
||||||
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
|
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimatedVisibility(
|
AnimatedVisibility(
|
||||||
|
|
@ -89,7 +89,7 @@ private fun RoomListSearchContent(
|
||||||
val borderColor = MaterialTheme.colorScheme.tertiary
|
val borderColor = MaterialTheme.colorScheme.tertiary
|
||||||
val strokeWidth = 1.dp
|
val strokeWidth = 1.dp
|
||||||
fun onBackButtonClick() {
|
fun onBackButtonClick() {
|
||||||
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
|
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onRoomClick(room: RoomListRoomSummary) {
|
fun onRoomClick(room: RoomListRoomSummary) {
|
||||||
|
|
@ -127,7 +127,7 @@ private fun RoomListSearchContent(
|
||||||
),
|
),
|
||||||
trailingIcon = if (state.query.text.isNotEmpty()) {
|
trailingIcon = if (state.query.text.isNotEmpty()) {
|
||||||
@Composable {
|
@Composable {
|
||||||
IconButton(onClick = { state.eventSink(RoomListSearchEvents.ClearQuery) }) {
|
IconButton(onClick = { state.eventSink(RoomListSearchEvent.ClearQuery) }) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = CompoundIcons.Close(),
|
imageVector = CompoundIcons.Close(),
|
||||||
contentDescription = stringResource(CommonStrings.action_cancel)
|
contentDescription = stringResource(CommonStrings.action_cancel)
|
||||||
|
|
|
||||||
|
|
@ -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.RoomListFiltersState
|
||||||
import io.element.android.features.home.impl.filters.aRoomListFiltersState
|
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.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.RoomListSearchState
|
||||||
import io.element.android.features.home.impl.search.aRoomListSearchState
|
import io.element.android.features.home.impl.search.aRoomListSearchState
|
||||||
import io.element.android.features.invite.api.SeenInvitesStore
|
import io.element.android.features.invite.api.SeenInvitesStore
|
||||||
|
|
@ -327,7 +327,7 @@ class RoomListPresenterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - toggle search menu`() = runTest {
|
fun `present - toggle search menu`() = runTest {
|
||||||
val eventRecorder = EventsRecorder<RoomListSearchEvents>()
|
val eventRecorder = EventsRecorder<RoomListSearchEvent>()
|
||||||
val searchPresenter: Presenter<RoomListSearchState> = Presenter {
|
val searchPresenter: Presenter<RoomListSearchState> = Presenter {
|
||||||
aRoomListSearchState(
|
aRoomListSearchState(
|
||||||
eventSink = eventRecorder
|
eventSink = eventRecorder
|
||||||
|
|
@ -343,13 +343,13 @@ class RoomListPresenterTest {
|
||||||
eventRecorder.assertEmpty()
|
eventRecorder.assertEmpty()
|
||||||
initialState.eventSink(RoomListEvent.ToggleSearchResults)
|
initialState.eventSink(RoomListEvent.ToggleSearchResults)
|
||||||
eventRecorder.assertSingle(
|
eventRecorder.assertSingle(
|
||||||
RoomListSearchEvents.ToggleSearchVisibility
|
RoomListSearchEvent.ToggleSearchVisibility
|
||||||
)
|
)
|
||||||
initialState.eventSink(RoomListEvent.ToggleSearchResults)
|
initialState.eventSink(RoomListEvent.ToggleSearchResults)
|
||||||
eventRecorder.assertList(
|
eventRecorder.assertList(
|
||||||
listOf(
|
listOf(
|
||||||
RoomListSearchEvents.ToggleSearchVisibility,
|
RoomListSearchEvent.ToggleSearchVisibility,
|
||||||
RoomListSearchEvents.ToggleSearchVisibility
|
RoomListSearchEvent.ToggleSearchVisibility
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,11 +48,11 @@ class RoomListSearchPresenterTest {
|
||||||
}.test {
|
}.test {
|
||||||
awaitItem().let { state ->
|
awaitItem().let { state ->
|
||||||
assertThat(state.isSearchActive).isFalse()
|
assertThat(state.isSearchActive).isFalse()
|
||||||
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
|
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
|
||||||
}
|
}
|
||||||
awaitItem().let { state ->
|
awaitItem().let { state ->
|
||||||
assertThat(state.isSearchActive).isTrue()
|
assertThat(state.isSearchActive).isTrue()
|
||||||
state.eventSink(RoomListSearchEvents.ToggleSearchVisibility)
|
state.eventSink(RoomListSearchEvent.ToggleSearchVisibility)
|
||||||
}
|
}
|
||||||
awaitItem().let { state ->
|
awaitItem().let { state ->
|
||||||
assertThat(state.isSearchActive).isFalse()
|
assertThat(state.isSearchActive).isFalse()
|
||||||
|
|
@ -82,7 +82,7 @@ class RoomListSearchPresenterTest {
|
||||||
).isEqualTo(
|
).isEqualTo(
|
||||||
RoomListFilter.NormalizedMatchRoomName("Search")
|
RoomListFilter.NormalizedMatchRoomName("Search")
|
||||||
)
|
)
|
||||||
state.eventSink(RoomListSearchEvents.ClearQuery)
|
state.eventSink(RoomListSearchEvent.ClearQuery)
|
||||||
}
|
}
|
||||||
awaitItem().let { state ->
|
awaitItem().let { state ->
|
||||||
assertThat(state.query.text.toString()).isEmpty()
|
assertThat(state.query.text.toString()).isEmpty()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue