ReportMessageEvents -> ReportMessageEvent

This commit is contained in:
Benoit Marty
2026-01-27 10:00:44 +01:00
parent e2f281b248
commit 60b261cd61
5 changed files with 23 additions and 23 deletions

View File

@@ -8,9 +8,9 @@
package io.element.android.features.messages.impl.report
sealed interface ReportMessageEvents {
data class UpdateReason(val reason: String) : ReportMessageEvents
data object ToggleBlockUser : ReportMessageEvents
data object Report : ReportMessageEvents
data object ClearError : ReportMessageEvents
sealed interface ReportMessageEvent {
data class UpdateReason(val reason: String) : ReportMessageEvent
data object ToggleBlockUser : ReportMessageEvent
data object Report : ReportMessageEvent
data object ClearError : ReportMessageEvent
}

View File

@@ -54,12 +54,12 @@ class ReportMessagePresenter(
var blockUser by rememberSaveable { mutableStateOf(false) }
var result: MutableState<AsyncAction<Unit>> = remember { mutableStateOf(AsyncAction.Uninitialized) }
fun handleEvent(event: ReportMessageEvents) {
fun handleEvent(event: ReportMessageEvent) {
when (event) {
is ReportMessageEvents.UpdateReason -> reason = event.reason
ReportMessageEvents.ToggleBlockUser -> blockUser = !blockUser
ReportMessageEvents.Report -> coroutineScope.report(inputs.eventId, inputs.senderId, reason, blockUser, result)
ReportMessageEvents.ClearError -> result.value = AsyncAction.Uninitialized
is ReportMessageEvent.UpdateReason -> reason = event.reason
ReportMessageEvent.ToggleBlockUser -> blockUser = !blockUser
ReportMessageEvent.Report -> coroutineScope.report(inputs.eventId, inputs.senderId, reason, blockUser, result)
ReportMessageEvent.ClearError -> result.value = AsyncAction.Uninitialized
}
}

View File

@@ -14,5 +14,5 @@ data class ReportMessageState(
val reason: String,
val blockUser: Boolean,
val result: AsyncAction<Unit>,
val eventSink: (ReportMessageEvents) -> Unit
val eventSink: (ReportMessageEvent) -> Unit
)

View File

@@ -57,7 +57,7 @@ fun ReportMessageView(
progressDialog = {},
onSuccess = { onBackClick() },
errorMessage = { stringResource(CommonStrings.error_unknown) },
onErrorDismiss = { state.eventSink(ReportMessageEvents.ClearError) }
onErrorDismiss = { state.eventSink(ReportMessageEvent.ClearError) }
)
Scaffold(
@@ -84,7 +84,7 @@ fun ReportMessageView(
TextField(
value = state.reason,
onValueChange = { state.eventSink(ReportMessageEvents.UpdateReason(it)) },
onValueChange = { state.eventSink(ReportMessageEvent.UpdateReason(it)) },
placeholder = stringResource(R.string.screen_report_content_hint),
minLines = 3,
enabled = !isSending,
@@ -113,7 +113,7 @@ fun ReportMessageView(
Switch(
enabled = !isSending,
checked = state.blockUser,
onCheckedChange = { state.eventSink(ReportMessageEvents.ToggleBlockUser) },
onCheckedChange = { state.eventSink(ReportMessageEvent.ToggleBlockUser) },
)
}
@@ -125,7 +125,7 @@ fun ReportMessageView(
showProgress = isSending,
onClick = {
focusManager.clearFocus(force = true)
state.eventSink(ReportMessageEvents.Report)
state.eventSink(ReportMessageEvent.Report)
},
modifier = Modifier
.fillMaxWidth()

View File

@@ -51,7 +51,7 @@ class ReportMessagePresenterTest {
}.test {
val initialState = awaitItem()
val reason = "This user is making the chat very toxic."
initialState.eventSink(ReportMessageEvents.UpdateReason(reason))
initialState.eventSink(ReportMessageEvent.UpdateReason(reason))
assertThat(awaitItem().reason).isEqualTo(reason)
}
@@ -64,11 +64,11 @@ class ReportMessagePresenterTest {
presenter.present()
}.test {
val initialState = awaitItem()
initialState.eventSink(ReportMessageEvents.ToggleBlockUser)
initialState.eventSink(ReportMessageEvent.ToggleBlockUser)
assertThat(awaitItem().blockUser).isTrue()
initialState.eventSink(ReportMessageEvents.ToggleBlockUser)
initialState.eventSink(ReportMessageEvent.ToggleBlockUser)
assertThat(awaitItem().blockUser).isFalse()
}
@@ -87,9 +87,9 @@ class ReportMessagePresenterTest {
presenter.present()
}.test {
val initialState = awaitItem()
initialState.eventSink(ReportMessageEvents.ToggleBlockUser)
initialState.eventSink(ReportMessageEvent.ToggleBlockUser)
skipItems(1)
initialState.eventSink(ReportMessageEvents.Report)
initialState.eventSink(ReportMessageEvent.Report)
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Success::class.java)
reportContentResult.assertions().isCalledOnce()
@@ -109,7 +109,7 @@ class ReportMessagePresenterTest {
presenter.present()
}.test {
val initialState = awaitItem()
initialState.eventSink(ReportMessageEvents.Report)
initialState.eventSink(ReportMessageEvent.Report)
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Success::class.java)
reportContentResult.assertions().isCalledOnce()
@@ -129,13 +129,13 @@ class ReportMessagePresenterTest {
presenter.present()
}.test {
val initialState = awaitItem()
initialState.eventSink(ReportMessageEvents.Report)
initialState.eventSink(ReportMessageEvent.Report)
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
val resultState = awaitItem()
assertThat(resultState.result).isInstanceOf(AsyncAction.Failure::class.java)
reportContentResult.assertions().isCalledOnce()
resultState.eventSink(ReportMessageEvents.ClearError)
resultState.eventSink(ReportMessageEvent.ClearError)
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Uninitialized::class.java)
}
}