EditDefaultNotificationSettingStateEvents -> EditDefaultNotificationSettingStateEvent

This commit is contained in:
Benoit Marty
2026-08-25 10:12:06 +02:00
parent 8a02b50c98
commit 5d8ca663df
5 changed files with 13 additions and 13 deletions
@@ -76,12 +76,12 @@ class EditDefaultNotificationSettingPresenter(
displayMentionsOnlyDisclaimer = !notificationSettingsService.canHomeServerPushEncryptedEventsToDevice().getOrDefault(true) displayMentionsOnlyDisclaimer = !notificationSettingsService.canHomeServerPushEncryptedEventsToDevice().getOrDefault(true)
} }
fun handleEvent(event: EditDefaultNotificationSettingStateEvents) { fun handleEvent(event: EditDefaultNotificationSettingStateEvent) {
when (event) { when (event) {
is EditDefaultNotificationSettingStateEvents.SetNotificationMode -> { is EditDefaultNotificationSettingStateEvent.SetNotificationMode -> {
localCoroutineScope.setDefaultNotificationMode(event.mode, changeNotificationSettingAction) localCoroutineScope.setDefaultNotificationMode(event.mode, changeNotificationSettingAction)
} }
EditDefaultNotificationSettingStateEvents.ClearError -> changeNotificationSettingAction.value = AsyncAction.Uninitialized EditDefaultNotificationSettingStateEvent.ClearError -> changeNotificationSettingAction.value = AsyncAction.Uninitialized
} }
} }
@@ -18,5 +18,5 @@ data class EditDefaultNotificationSettingState(
val roomsWithUserDefinedMode: ImmutableList<EditNotificationSettingRoomInfo>, val roomsWithUserDefinedMode: ImmutableList<EditNotificationSettingRoomInfo>,
val changeNotificationSettingAction: AsyncAction<Unit>, val changeNotificationSettingAction: AsyncAction<Unit>,
val displayMentionsOnlyDisclaimer: Boolean, val displayMentionsOnlyDisclaimer: Boolean,
val eventSink: (EditDefaultNotificationSettingStateEvents) -> Unit, val eventSink: (EditDefaultNotificationSettingStateEvent) -> Unit,
) )
@@ -10,7 +10,7 @@ package io.element.android.features.preferences.impl.notifications.edit
import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.room.RoomNotificationMode
sealed interface EditDefaultNotificationSettingStateEvents { sealed interface EditDefaultNotificationSettingStateEvent {
data class SetNotificationMode(val mode: RoomNotificationMode) : EditDefaultNotificationSettingStateEvents data class SetNotificationMode(val mode: RoomNotificationMode) : EditDefaultNotificationSettingStateEvent
data object ClearError : EditDefaultNotificationSettingStateEvents data object ClearError : EditDefaultNotificationSettingStateEvent
} }
@@ -70,7 +70,7 @@ fun EditDefaultNotificationSettingView(
mode = item, mode = item,
isSelected = state.mode == item, isSelected = state.mode == item,
displayMentionsOnlyDisclaimer = state.displayMentionsOnlyDisclaimer, displayMentionsOnlyDisclaimer = state.displayMentionsOnlyDisclaimer,
onSelectOption = { state.eventSink(EditDefaultNotificationSettingStateEvents.SetNotificationMode(it)) } onSelectOption = { state.eventSink(EditDefaultNotificationSettingStateEvent.SetNotificationMode(it)) }
) )
} }
} }
@@ -116,7 +116,7 @@ fun EditDefaultNotificationSettingView(
AsyncActionView( AsyncActionView(
async = state.changeNotificationSettingAction, async = state.changeNotificationSettingAction,
errorMessage = { stringResource(R.string.screen_notification_settings_edit_failed_updating_default_mode) }, errorMessage = { stringResource(R.string.screen_notification_settings_edit_failed_updating_default_mode) },
onErrorDismiss = { state.eventSink(EditDefaultNotificationSettingStateEvents.ClearError) }, onErrorDismiss = { state.eventSink(EditDefaultNotificationSettingStateEvent.ClearError) },
onSuccess = {}, onSuccess = {},
) )
} }
@@ -10,7 +10,7 @@ package io.element.android.features.preferences.impl.notifications
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingPresenter import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingPresenter
import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingStateEvents import io.element.android.features.preferences.impl.notifications.edit.EditDefaultNotificationSettingStateEvent
import io.element.android.libraries.matrix.api.room.RoomNotificationMode import io.element.android.libraries.matrix.api.room.RoomNotificationMode
import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.AN_EXCEPTION
import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_ROOM_ID
@@ -150,7 +150,7 @@ class EditDefaultNotificationSettingsPresenterTest {
), ),
) )
presenter.test { presenter.test {
awaitItem().eventSink(EditDefaultNotificationSettingStateEvents.SetNotificationMode(RoomNotificationMode.ALL_MESSAGES)) awaitItem().eventSink(EditDefaultNotificationSettingStateEvent.SetNotificationMode(RoomNotificationMode.ALL_MESSAGES))
val loadedState = consumeItemsUntilPredicate { val loadedState = consumeItemsUntilPredicate {
it.mode == RoomNotificationMode.ALL_MESSAGES it.mode == RoomNotificationMode.ALL_MESSAGES
}.last() }.last()
@@ -166,12 +166,12 @@ class EditDefaultNotificationSettingsPresenterTest {
val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService) val presenter = createEditDefaultNotificationSettingPresenter(notificationSettingsService)
notificationSettingsService.givenSetDefaultNotificationModeError(AN_EXCEPTION) notificationSettingsService.givenSetDefaultNotificationModeError(AN_EXCEPTION)
presenter.test { presenter.test {
awaitItem().eventSink(EditDefaultNotificationSettingStateEvents.SetNotificationMode(RoomNotificationMode.ALL_MESSAGES)) awaitItem().eventSink(EditDefaultNotificationSettingStateEvent.SetNotificationMode(RoomNotificationMode.ALL_MESSAGES))
val errorState = consumeItemsUntilPredicate { val errorState = consumeItemsUntilPredicate {
it.changeNotificationSettingAction.isFailure() it.changeNotificationSettingAction.isFailure()
}.last() }.last()
assertThat(errorState.changeNotificationSettingAction.isFailure()).isTrue() assertThat(errorState.changeNotificationSettingAction.isFailure()).isTrue()
errorState.eventSink(EditDefaultNotificationSettingStateEvents.ClearError) errorState.eventSink(EditDefaultNotificationSettingStateEvent.ClearError)
val clearErrorState = consumeItemsUntilPredicate { val clearErrorState = consumeItemsUntilPredicate {
it.changeNotificationSettingAction.isUninitialized() it.changeNotificationSettingAction.isUninitialized()
}.last() }.last()