ResolveVerifiedUserSendFailureEvent -> ResolveVerifiedUserSendFailureEven
This commit is contained in:
@@ -10,12 +10,12 @@ package io.element.android.features.messages.impl.crypto.sendfailure.resolve
|
||||
|
||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||
|
||||
sealed interface ResolveVerifiedUserSendFailureEvents {
|
||||
sealed interface ResolveVerifiedUserSendFailureEvent {
|
||||
data class ComputeForMessage(
|
||||
val messageEvent: TimelineItem.Event,
|
||||
) : ResolveVerifiedUserSendFailureEvents
|
||||
) : ResolveVerifiedUserSendFailureEvent
|
||||
|
||||
data object ResolveAndResend : ResolveVerifiedUserSendFailureEvents
|
||||
data object Retry : ResolveVerifiedUserSendFailureEvents
|
||||
data object Dismiss : ResolveVerifiedUserSendFailureEvents
|
||||
data object ResolveAndResend : ResolveVerifiedUserSendFailureEvent
|
||||
data object Retry : ResolveVerifiedUserSendFailureEvent
|
||||
data object Dismiss : ResolveVerifiedUserSendFailureEvent
|
||||
}
|
||||
@@ -48,9 +48,9 @@ class ResolveVerifiedUserSendFailurePresenter(
|
||||
}
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
||||
fun handleEvent(event: ResolveVerifiedUserSendFailureEvents) {
|
||||
fun handleEvent(event: ResolveVerifiedUserSendFailureEvent) {
|
||||
when (event) {
|
||||
is ResolveVerifiedUserSendFailureEvents.ComputeForMessage -> {
|
||||
is ResolveVerifiedUserSendFailureEvent.ComputeForMessage -> {
|
||||
val sendState = event.messageEvent.localSendState as? LocalEventSendState.Failed.VerifiedUser
|
||||
val transactionId = event.messageEvent.transactionId
|
||||
val sendHandle = event.messageEvent.sendhandle
|
||||
@@ -65,10 +65,10 @@ class ResolveVerifiedUserSendFailurePresenter(
|
||||
null
|
||||
}
|
||||
}
|
||||
ResolveVerifiedUserSendFailureEvents.Dismiss -> {
|
||||
ResolveVerifiedUserSendFailureEvent.Dismiss -> {
|
||||
resolver = null
|
||||
}
|
||||
ResolveVerifiedUserSendFailureEvents.Retry -> {
|
||||
ResolveVerifiedUserSendFailureEvent.Retry -> {
|
||||
coroutineScope.launch {
|
||||
resolver?.run {
|
||||
runUpdatingState(retryAction) {
|
||||
@@ -77,7 +77,7 @@ class ResolveVerifiedUserSendFailurePresenter(
|
||||
}
|
||||
}
|
||||
}
|
||||
ResolveVerifiedUserSendFailureEvents.ResolveAndResend -> {
|
||||
ResolveVerifiedUserSendFailureEvent.ResolveAndResend -> {
|
||||
coroutineScope.launch {
|
||||
resolver?.run {
|
||||
runUpdatingState(resolveAction) {
|
||||
|
||||
@@ -15,5 +15,5 @@ data class ResolveVerifiedUserSendFailureState(
|
||||
val verifiedUserSendFailure: VerifiedUserSendFailure,
|
||||
val resolveAction: AsyncAction<Unit>,
|
||||
val retryAction: AsyncAction<Unit>,
|
||||
val eventSink: (ResolveVerifiedUserSendFailureEvents) -> Unit
|
||||
val eventSink: (ResolveVerifiedUserSendFailureEvent) -> Unit
|
||||
)
|
||||
|
||||
@@ -29,7 +29,7 @@ fun aResolveVerifiedUserSendFailureState(
|
||||
verifiedUserSendFailure: VerifiedUserSendFailure = VerifiedUserSendFailure.None,
|
||||
resolveAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
||||
retryAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
||||
eventSink: (ResolveVerifiedUserSendFailureEvents) -> Unit = {}
|
||||
eventSink: (ResolveVerifiedUserSendFailureEvent) -> Unit = {}
|
||||
) = ResolveVerifiedUserSendFailureState(
|
||||
verifiedUserSendFailure = verifiedUserSendFailure,
|
||||
resolveAction = resolveAction,
|
||||
|
||||
@@ -47,15 +47,15 @@ fun ResolveVerifiedUserSendFailureView(
|
||||
var showSheet by remember { mutableStateOf(false) }
|
||||
|
||||
fun dismiss() {
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.Dismiss)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.Dismiss)
|
||||
}
|
||||
|
||||
fun onRetryClick() {
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.Retry)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.Retry)
|
||||
}
|
||||
|
||||
fun onResolveAndResendClick() {
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
|
||||
LaunchedEffect(state.verifiedUserSendFailure) {
|
||||
|
||||
@@ -25,7 +25,7 @@ import dev.zacsweers.metro.AssistedFactory
|
||||
import dev.zacsweers.metro.AssistedInject
|
||||
import io.element.android.features.messages.impl.MessagesNavigator
|
||||
import io.element.android.features.messages.impl.UserEventPermissions
|
||||
import io.element.android.features.messages.impl.crypto.sendfailure.resolve.ResolveVerifiedUserSendFailureEvents
|
||||
import io.element.android.features.messages.impl.crypto.sendfailure.resolve.ResolveVerifiedUserSendFailureEvent
|
||||
import io.element.android.features.messages.impl.crypto.sendfailure.resolve.ResolveVerifiedUserSendFailureState
|
||||
import io.element.android.features.messages.impl.timeline.components.MessageShieldData
|
||||
import io.element.android.features.messages.impl.timeline.factories.TimelineItemsFactory
|
||||
@@ -218,7 +218,7 @@ class TimelinePresenter(
|
||||
TimelineEvent.HideShieldDialog -> messageShieldDialogData.value = null
|
||||
is TimelineEvent.ShowShieldDialog -> messageShieldDialogData.value = event.messageShieldData
|
||||
is TimelineEvent.ComputeVerifiedUserSendFailure -> {
|
||||
resolveVerifiedUserSendFailureState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(event.event))
|
||||
resolveVerifiedUserSendFailureState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(event.event))
|
||||
}
|
||||
is TimelineEvent.NavigateToPredecessorOrSuccessorRoom -> {
|
||||
// Navigate to the predecessor or successor room
|
||||
|
||||
@@ -47,7 +47,7 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val sentMessage = aMessageEvent()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(sentMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(sentMessage))
|
||||
ensureAllEventsConsumed()
|
||||
}
|
||||
}
|
||||
@@ -61,7 +61,7 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
)
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(sentMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(sentMessage))
|
||||
ensureAllEventsConsumed()
|
||||
}
|
||||
}
|
||||
@@ -75,7 +75,7 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
)
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
ensureAllEventsConsumed()
|
||||
}
|
||||
}
|
||||
@@ -94,11 +94,11 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val failedMessage = aVerifiedUserHasUnsignedDeviceFailedMessage()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.UnsignedDevice.FromYou)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.Dismiss)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.Dismiss)
|
||||
}
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
@@ -122,12 +122,12 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val failedMessage = aVerifiedUserHasUnsignedDeviceFailedMessage()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.UnsignedDevice.FromYou)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.Retry)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.Retry)
|
||||
}
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.retryAction).isEqualTo(AsyncAction.Loading)
|
||||
@@ -158,12 +158,12 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val failedMessage = aVerifiedUserHasUnsignedDeviceFailedMessage()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.UnsignedDevice.FromYou)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.resolveAction).isEqualTo(AsyncAction.Loading)
|
||||
@@ -173,7 +173,7 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.UnsignedDevice.FromOther(A_USER_ID_2.value))
|
||||
assertThat(state.resolveAction).isEqualTo(AsyncAction.Success(Unit))
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
|
||||
skipItems(3)
|
||||
@@ -201,12 +201,12 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val failedMessage = aVerifiedUserHasUnsignedDeviceFailedMessage()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.UnsignedDevice.FromYou)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.resolveAction).isEqualTo(AsyncAction.Loading)
|
||||
@@ -233,12 +233,12 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val failedMessage = aVerifiedUserChangedIdentityMessage()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.ChangedIdentity(A_USER_ID.value))
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.Retry)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.Retry)
|
||||
}
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.retryAction).isEqualTo(AsyncAction.Loading)
|
||||
@@ -269,12 +269,12 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val failedMessage = aVerifiedUserChangedIdentityMessage()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.ChangedIdentity(A_USER_ID.value))
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.resolveAction).isEqualTo(AsyncAction.Loading)
|
||||
@@ -284,7 +284,7 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.ChangedIdentity(A_USER_ID_2.value))
|
||||
assertThat(state.resolveAction).isEqualTo(AsyncAction.Success(Unit))
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
|
||||
skipItems(3)
|
||||
@@ -312,12 +312,12 @@ class ResolveVerifiedUserSendFailurePresenterTest {
|
||||
val failedMessage = aVerifiedUserChangedIdentityMessage()
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.None)
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvents.ComputeForMessage(failedMessage))
|
||||
initialState.eventSink(ResolveVerifiedUserSendFailureEvent.ComputeForMessage(failedMessage))
|
||||
|
||||
skipItems(1)
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.verifiedUserSendFailure).isEqualTo(VerifiedUserSendFailure.ChangedIdentity(A_USER_ID.value))
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
state.eventSink(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
awaitItem().also { state ->
|
||||
assertThat(state.resolveAction).isEqualTo(AsyncAction.Loading)
|
||||
|
||||
@@ -27,7 +27,7 @@ class ResolveVerifiedUserSendFailureViewTest {
|
||||
|
||||
@Test
|
||||
fun `clicking on resolve and resend emit the expected event`() {
|
||||
val eventsRecorder = EventsRecorder<ResolveVerifiedUserSendFailureEvents>()
|
||||
val eventsRecorder = EventsRecorder<ResolveVerifiedUserSendFailureEvent>()
|
||||
rule.setResolveVerifiedUserSendFailureView(
|
||||
state = aResolveVerifiedUserSendFailureState(
|
||||
verifiedUserSendFailure = aChangedIdentitySendFailure(),
|
||||
@@ -36,12 +36,12 @@ class ResolveVerifiedUserSendFailureViewTest {
|
||||
)
|
||||
|
||||
rule.clickOn(res = CommonStrings.screen_resolve_send_failure_changed_identity_primary_button_title)
|
||||
eventsRecorder.assertSingle(ResolveVerifiedUserSendFailureEvents.ResolveAndResend)
|
||||
eventsRecorder.assertSingle(ResolveVerifiedUserSendFailureEvent.ResolveAndResend)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `clicking on retry emit the expected event`() {
|
||||
val eventsRecorder = EventsRecorder<ResolveVerifiedUserSendFailureEvents>()
|
||||
val eventsRecorder = EventsRecorder<ResolveVerifiedUserSendFailureEvent>()
|
||||
rule.setResolveVerifiedUserSendFailureView(
|
||||
state = aResolveVerifiedUserSendFailureState(
|
||||
verifiedUserSendFailure = aChangedIdentitySendFailure(),
|
||||
@@ -50,7 +50,7 @@ class ResolveVerifiedUserSendFailureViewTest {
|
||||
)
|
||||
|
||||
rule.clickOn(res = CommonStrings.action_retry)
|
||||
eventsRecorder.assertSingle(ResolveVerifiedUserSendFailureEvents.Retry)
|
||||
eventsRecorder.assertSingle(ResolveVerifiedUserSendFailureEvent.Retry)
|
||||
}
|
||||
|
||||
private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setResolveVerifiedUserSendFailureView(
|
||||
|
||||
Reference in New Issue
Block a user