mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 19:10:43 +00:00
ReportMessageEvents -> ReportMessageEvent
This commit is contained in:
+5
-5
@@ -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
|
||||||
}
|
}
|
||||||
+5
-5
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
+4
-4
@@ -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()
|
||||||
|
|||||||
+8
-8
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user