ReportMessageEvents -> ReportMessageEvent
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user