ReportMessageEvents -> ReportMessageEvent
This commit is contained in:
parent
9227d96d3e
commit
3133db3cf6
5 changed files with 23 additions and 23 deletions
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue