ReportMessageEvents -> ReportMessageEvent
This commit is contained in:
parent
e2f281b248
commit
60b261cd61
5 changed files with 23 additions and 23 deletions
|
|
@ -8,9 +8,9 @@
|
||||||
|
|
||||||
package io.element.android.features.messages.impl.report
|
package io.element.android.features.messages.impl.report
|
||||||
|
|
||||||
sealed interface ReportMessageEvents {
|
sealed interface ReportMessageEvent {
|
||||||
data class UpdateReason(val reason: String) : ReportMessageEvents
|
data class UpdateReason(val reason: String) : ReportMessageEvent
|
||||||
data object ToggleBlockUser : ReportMessageEvents
|
data object ToggleBlockUser : ReportMessageEvent
|
||||||
data object Report : ReportMessageEvents
|
data object Report : ReportMessageEvent
|
||||||
data object ClearError : ReportMessageEvents
|
data object ClearError : ReportMessageEvent
|
||||||
}
|
}
|
||||||
|
|
@ -54,12 +54,12 @@ class ReportMessagePresenter(
|
||||||
var blockUser by rememberSaveable { mutableStateOf(false) }
|
var blockUser by rememberSaveable { mutableStateOf(false) }
|
||||||
var result: MutableState<AsyncAction<Unit>> = remember { mutableStateOf(AsyncAction.Uninitialized) }
|
var result: MutableState<AsyncAction<Unit>> = remember { mutableStateOf(AsyncAction.Uninitialized) }
|
||||||
|
|
||||||
fun handleEvent(event: ReportMessageEvents) {
|
fun handleEvent(event: ReportMessageEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is ReportMessageEvents.UpdateReason -> reason = event.reason
|
is ReportMessageEvent.UpdateReason -> reason = event.reason
|
||||||
ReportMessageEvents.ToggleBlockUser -> blockUser = !blockUser
|
ReportMessageEvent.ToggleBlockUser -> blockUser = !blockUser
|
||||||
ReportMessageEvents.Report -> coroutineScope.report(inputs.eventId, inputs.senderId, reason, blockUser, result)
|
ReportMessageEvent.Report -> coroutineScope.report(inputs.eventId, inputs.senderId, reason, blockUser, result)
|
||||||
ReportMessageEvents.ClearError -> result.value = AsyncAction.Uninitialized
|
ReportMessageEvent.ClearError -> result.value = AsyncAction.Uninitialized
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,5 @@ data class ReportMessageState(
|
||||||
val reason: String,
|
val reason: String,
|
||||||
val blockUser: Boolean,
|
val blockUser: Boolean,
|
||||||
val result: AsyncAction<Unit>,
|
val result: AsyncAction<Unit>,
|
||||||
val eventSink: (ReportMessageEvents) -> Unit
|
val eventSink: (ReportMessageEvent) -> Unit
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ fun ReportMessageView(
|
||||||
progressDialog = {},
|
progressDialog = {},
|
||||||
onSuccess = { onBackClick() },
|
onSuccess = { onBackClick() },
|
||||||
errorMessage = { stringResource(CommonStrings.error_unknown) },
|
errorMessage = { stringResource(CommonStrings.error_unknown) },
|
||||||
onErrorDismiss = { state.eventSink(ReportMessageEvents.ClearError) }
|
onErrorDismiss = { state.eventSink(ReportMessageEvent.ClearError) }
|
||||||
)
|
)
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
|
|
@ -84,7 +84,7 @@ fun ReportMessageView(
|
||||||
|
|
||||||
TextField(
|
TextField(
|
||||||
value = state.reason,
|
value = state.reason,
|
||||||
onValueChange = { state.eventSink(ReportMessageEvents.UpdateReason(it)) },
|
onValueChange = { state.eventSink(ReportMessageEvent.UpdateReason(it)) },
|
||||||
placeholder = stringResource(R.string.screen_report_content_hint),
|
placeholder = stringResource(R.string.screen_report_content_hint),
|
||||||
minLines = 3,
|
minLines = 3,
|
||||||
enabled = !isSending,
|
enabled = !isSending,
|
||||||
|
|
@ -113,7 +113,7 @@ fun ReportMessageView(
|
||||||
Switch(
|
Switch(
|
||||||
enabled = !isSending,
|
enabled = !isSending,
|
||||||
checked = state.blockUser,
|
checked = state.blockUser,
|
||||||
onCheckedChange = { state.eventSink(ReportMessageEvents.ToggleBlockUser) },
|
onCheckedChange = { state.eventSink(ReportMessageEvent.ToggleBlockUser) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -125,7 +125,7 @@ fun ReportMessageView(
|
||||||
showProgress = isSending,
|
showProgress = isSending,
|
||||||
onClick = {
|
onClick = {
|
||||||
focusManager.clearFocus(force = true)
|
focusManager.clearFocus(force = true)
|
||||||
state.eventSink(ReportMessageEvents.Report)
|
state.eventSink(ReportMessageEvent.Report)
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ class ReportMessagePresenterTest {
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
val reason = "This user is making the chat very toxic."
|
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)
|
assertThat(awaitItem().reason).isEqualTo(reason)
|
||||||
}
|
}
|
||||||
|
|
@ -64,11 +64,11 @@ class ReportMessagePresenterTest {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ReportMessageEvents.ToggleBlockUser)
|
initialState.eventSink(ReportMessageEvent.ToggleBlockUser)
|
||||||
|
|
||||||
assertThat(awaitItem().blockUser).isTrue()
|
assertThat(awaitItem().blockUser).isTrue()
|
||||||
|
|
||||||
initialState.eventSink(ReportMessageEvents.ToggleBlockUser)
|
initialState.eventSink(ReportMessageEvent.ToggleBlockUser)
|
||||||
|
|
||||||
assertThat(awaitItem().blockUser).isFalse()
|
assertThat(awaitItem().blockUser).isFalse()
|
||||||
}
|
}
|
||||||
|
|
@ -87,9 +87,9 @@ class ReportMessagePresenterTest {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ReportMessageEvents.ToggleBlockUser)
|
initialState.eventSink(ReportMessageEvent.ToggleBlockUser)
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
initialState.eventSink(ReportMessageEvents.Report)
|
initialState.eventSink(ReportMessageEvent.Report)
|
||||||
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
|
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
|
||||||
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Success::class.java)
|
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Success::class.java)
|
||||||
reportContentResult.assertions().isCalledOnce()
|
reportContentResult.assertions().isCalledOnce()
|
||||||
|
|
@ -109,7 +109,7 @@ class ReportMessagePresenterTest {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ReportMessageEvents.Report)
|
initialState.eventSink(ReportMessageEvent.Report)
|
||||||
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
|
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
|
||||||
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Success::class.java)
|
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Success::class.java)
|
||||||
reportContentResult.assertions().isCalledOnce()
|
reportContentResult.assertions().isCalledOnce()
|
||||||
|
|
@ -129,13 +129,13 @@ class ReportMessagePresenterTest {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
initialState.eventSink(ReportMessageEvents.Report)
|
initialState.eventSink(ReportMessageEvent.Report)
|
||||||
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
|
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Loading::class.java)
|
||||||
val resultState = awaitItem()
|
val resultState = awaitItem()
|
||||||
assertThat(resultState.result).isInstanceOf(AsyncAction.Failure::class.java)
|
assertThat(resultState.result).isInstanceOf(AsyncAction.Failure::class.java)
|
||||||
reportContentResult.assertions().isCalledOnce()
|
reportContentResult.assertions().isCalledOnce()
|
||||||
|
|
||||||
resultState.eventSink(ReportMessageEvents.ClearError)
|
resultState.eventSink(ReportMessageEvent.ClearError)
|
||||||
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Uninitialized::class.java)
|
assertThat(awaitItem().result).isInstanceOf(AsyncAction.Uninitialized::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue