Let AsyncAction.Confirming be an interface, with a AsyncAction.ConfirmingNoParams data object.

This will allow inheritance of `AsyncAction.Confirming` with parameter(s).
This commit is contained in:
Benoit Marty 2024-10-14 10:49:55 +02:00
parent c46896be09
commit 97fb7bc2fa
46 changed files with 86 additions and 84 deletions

View file

@ -51,7 +51,7 @@ class AccountDeactivationPresenter @Inject constructor(
action action
) )
} else { } else {
action.value = AsyncAction.Confirming action.value = AsyncAction.ConfirmingNoParams
} }
AccountDeactivationEvents.CloseDialogs -> { AccountDeactivationEvents.CloseDialogs -> {
action.value = AsyncAction.Uninitialized action.value = AsyncAction.Uninitialized

View file

@ -20,7 +20,7 @@ open class AccountDeactivationStateProvider : PreviewParameterProvider<AccountDe
), ),
anAccountDeactivationState( anAccountDeactivationState(
deactivateFormState = filledForm, deactivateFormState = filledForm,
accountDeactivationAction = AsyncAction.Confirming, accountDeactivationAction = AsyncAction.ConfirmingNoParams,
), ),
anAccountDeactivationState( anAccountDeactivationState(
deactivateFormState = filledForm, deactivateFormState = filledForm,

View file

@ -24,7 +24,7 @@ fun AccountDeactivationActionDialog(
when (state) { when (state) {
AsyncAction.Uninitialized -> AsyncAction.Uninitialized ->
Unit Unit
AsyncAction.Confirming -> is AsyncAction.Confirming ->
AccountDeactivationConfirmationDialog( AccountDeactivationConfirmationDialog(
onSubmitClick = onConfirmClick, onSubmitClick = onConfirmClick,
onDismiss = onDismissDialog onDismiss = onDismissDialog

View file

@ -74,7 +74,7 @@ class AccountDeactivationPresenterTest {
skipItems(1) skipItems(1)
initialState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false)) initialState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false))
val updatedState = awaitItem() val updatedState = awaitItem()
assertThat(updatedState.accountDeactivationAction).isEqualTo(AsyncAction.Confirming) assertThat(updatedState.accountDeactivationAction).isEqualTo(AsyncAction.ConfirmingNoParams)
updatedState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false)) updatedState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false))
val updatedState2 = awaitItem() val updatedState2 = awaitItem()
assertThat(updatedState2.accountDeactivationAction).isEqualTo(AsyncAction.Loading) assertThat(updatedState2.accountDeactivationAction).isEqualTo(AsyncAction.Loading)
@ -102,7 +102,7 @@ class AccountDeactivationPresenterTest {
skipItems(2) skipItems(2)
initialState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false)) initialState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false))
val updatedState = awaitItem() val updatedState = awaitItem()
assertThat(updatedState.accountDeactivationAction).isEqualTo(AsyncAction.Confirming) assertThat(updatedState.accountDeactivationAction).isEqualTo(AsyncAction.ConfirmingNoParams)
updatedState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false)) updatedState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false))
val updatedState2 = awaitItem() val updatedState2 = awaitItem()
assertThat(updatedState2.accountDeactivationAction).isEqualTo(AsyncAction.Loading) assertThat(updatedState2.accountDeactivationAction).isEqualTo(AsyncAction.Loading)
@ -135,7 +135,7 @@ class AccountDeactivationPresenterTest {
skipItems(2) skipItems(2)
initialState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false)) initialState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false))
val updatedState = awaitItem() val updatedState = awaitItem()
assertThat(updatedState.accountDeactivationAction).isEqualTo(AsyncAction.Confirming) assertThat(updatedState.accountDeactivationAction).isEqualTo(AsyncAction.ConfirmingNoParams)
updatedState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false)) updatedState.eventSink(AccountDeactivationEvents.DeactivateAccount(isRetry = false))
val updatedState2 = awaitItem() val updatedState2 = awaitItem()
assertThat(updatedState2.accountDeactivationAction).isEqualTo(AsyncAction.Loading) assertThat(updatedState2.accountDeactivationAction).isEqualTo(AsyncAction.Loading)

View file

@ -71,7 +71,7 @@ class AccountDeactivationViewTest {
deactivateFormState = aDeactivateFormState( deactivateFormState = aDeactivateFormState(
password = A_PASSWORD, password = A_PASSWORD,
), ),
accountDeactivationAction = AsyncAction.Confirming, accountDeactivationAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
), ),
) )

View file

@ -20,13 +20,13 @@ open class AcceptDeclineInviteStateProvider : PreviewParameterProvider<AcceptDec
invite = Optional.of( invite = Optional.of(
InviteData(RoomId("!room:matrix.org"), isDm = true, roomName = "Alice"), InviteData(RoomId("!room:matrix.org"), isDm = true, roomName = "Alice"),
), ),
declineAction = AsyncAction.Confirming, declineAction = AsyncAction.ConfirmingNoParams,
), ),
anAcceptDeclineInviteState( anAcceptDeclineInviteState(
invite = Optional.of( invite = Optional.of(
InviteData(RoomId("!room:matrix.org"), isDm = false, roomName = "Some room"), InviteData(RoomId("!room:matrix.org"), isDm = false, roomName = "Some room"),
), ),
declineAction = AsyncAction.Confirming, declineAction = AsyncAction.ConfirmingNoParams,
), ),
anAcceptDeclineInviteState( anAcceptDeclineInviteState(
acceptAction = AsyncAction.Failure(Throwable("Whoops")), acceptAction = AsyncAction.Failure(Throwable("Whoops")),

View file

@ -59,7 +59,7 @@ class AcceptDeclineInvitePresenter @Inject constructor(
is AcceptDeclineInviteEvents.DeclineInvite -> { is AcceptDeclineInviteEvents.DeclineInvite -> {
currentInvite = Optional.of(event.invite) currentInvite = Optional.of(event.invite)
declinedAction.value = AsyncAction.Confirming declinedAction.value = AsyncAction.ConfirmingNoParams
} }
is InternalAcceptDeclineInviteEvents.ConfirmDeclineInvite -> { is InternalAcceptDeclineInviteEvents.ConfirmDeclineInvite -> {

View file

@ -96,7 +96,7 @@ fun PinUnlockView(
latestOnSuccessLogout(state.signOutAction.data) latestOnSuccessLogout(state.signOutAction.data)
} }
} }
AsyncAction.Confirming, is AsyncAction.Confirming,
is AsyncAction.Failure, is AsyncAction.Failure,
AsyncAction.Uninitialized -> Unit AsyncAction.Uninitialized -> Unit
} }

View file

@ -189,7 +189,7 @@ private fun ColumnScope.Buttons(
} }
} }
AsyncAction.Uninitialized, AsyncAction.Uninitialized,
AsyncAction.Confirming -> Unit is AsyncAction.Confirming -> Unit
} }
} }
} }

View file

@ -14,7 +14,7 @@ open class DirectLogoutStateProvider : PreviewParameterProvider<DirectLogoutStat
override val values: Sequence<DirectLogoutState> override val values: Sequence<DirectLogoutState>
get() = sequenceOf( get() = sequenceOf(
aDirectLogoutState(), aDirectLogoutState(),
aDirectLogoutState(logoutAction = AsyncAction.Confirming), aDirectLogoutState(logoutAction = AsyncAction.ConfirmingNoParams),
aDirectLogoutState(logoutAction = AsyncAction.Loading), aDirectLogoutState(logoutAction = AsyncAction.Loading),
aDirectLogoutState(logoutAction = AsyncAction.Failure(Exception("Error"))), aDirectLogoutState(logoutAction = AsyncAction.Failure(Exception("Error"))),
aDirectLogoutState(logoutAction = AsyncAction.Success("success")), aDirectLogoutState(logoutAction = AsyncAction.Success("success")),

View file

@ -64,7 +64,7 @@ class LogoutPresenter @Inject constructor(
if (logoutAction.value.isConfirming() || event.ignoreSdkError) { if (logoutAction.value.isConfirming() || event.ignoreSdkError) {
localCoroutineScope.logout(logoutAction, event.ignoreSdkError) localCoroutineScope.logout(logoutAction, event.ignoreSdkError)
} else { } else {
logoutAction.value = AsyncAction.Confirming logoutAction.value = AsyncAction.ConfirmingNoParams
} }
} }
LogoutEvents.CloseDialogs -> { LogoutEvents.CloseDialogs -> {

View file

@ -21,7 +21,7 @@ open class LogoutStateProvider : PreviewParameterProvider<LogoutState> {
aLogoutState(isLastDevice = true), aLogoutState(isLastDevice = true),
aLogoutState(isLastDevice = false, backupUploadState = BackupUploadState.Uploading(66, 200)), aLogoutState(isLastDevice = false, backupUploadState = BackupUploadState.Uploading(66, 200)),
aLogoutState(isLastDevice = true, backupUploadState = BackupUploadState.Done), aLogoutState(isLastDevice = true, backupUploadState = BackupUploadState.Done),
aLogoutState(logoutAction = AsyncAction.Confirming), aLogoutState(logoutAction = AsyncAction.ConfirmingNoParams),
aLogoutState(logoutAction = AsyncAction.Loading), aLogoutState(logoutAction = AsyncAction.Loading),
aLogoutState(logoutAction = AsyncAction.Failure(Exception("Failed to logout"))), aLogoutState(logoutAction = AsyncAction.Failure(Exception("Failed to logout"))),
aLogoutState(backupUploadState = BackupUploadState.SteadyException(SteadyStateException.Connection("No network"))), aLogoutState(backupUploadState = BackupUploadState.SteadyException(SteadyStateException.Connection("No network"))),

View file

@ -52,7 +52,7 @@ class DirectLogoutPresenter @Inject constructor(
if (logoutAction.value.isConfirming() || event.ignoreSdkError) { if (logoutAction.value.isConfirming() || event.ignoreSdkError) {
localCoroutineScope.logout(logoutAction, event.ignoreSdkError) localCoroutineScope.logout(logoutAction, event.ignoreSdkError)
} else { } else {
logoutAction.value = AsyncAction.Confirming logoutAction.value = AsyncAction.ConfirmingNoParams
} }
} }
DirectLogoutEvents.CloseDialogs -> { DirectLogoutEvents.CloseDialogs -> {

View file

@ -29,7 +29,7 @@ fun LogoutActionDialog(
when (state) { when (state) {
AsyncAction.Uninitialized -> AsyncAction.Uninitialized ->
Unit Unit
AsyncAction.Confirming -> is AsyncAction.Confirming ->
LogoutConfirmationDialog( LogoutConfirmationDialog(
onSubmitClick = onConfirmClick, onSubmitClick = onConfirmClick,
onDismiss = onDismissDialog onDismiss = onDismissDialog

View file

@ -107,7 +107,7 @@ class LogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
initialState.eventSink.invoke(LogoutEvents.CloseDialogs) initialState.eventSink.invoke(LogoutEvents.CloseDialogs)
val finalState = awaitItem() val finalState = awaitItem()
assertThat(finalState.logoutAction).isEqualTo(AsyncAction.Uninitialized) assertThat(finalState.logoutAction).isEqualTo(AsyncAction.Uninitialized)
@ -123,7 +123,7 @@ class LogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmationState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false)) confirmationState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false))
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java)
@ -148,7 +148,7 @@ class LogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmationState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false)) confirmationState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false))
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java)
@ -180,7 +180,7 @@ class LogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmationState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false)) confirmationState.eventSink.invoke(LogoutEvents.Logout(ignoreSdkError = false))
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java)

View file

@ -48,7 +48,7 @@ class LogoutViewTest {
val eventsRecorder = EventsRecorder<LogoutEvents>() val eventsRecorder = EventsRecorder<LogoutEvents>()
rule.setLogoutView( rule.setLogoutView(
aLogoutState( aLogoutState(
logoutAction = AsyncAction.Confirming, logoutAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder eventSink = eventsRecorder
), ),
) )

View file

@ -36,7 +36,7 @@ class DefaultDirectLogoutViewTest {
val eventsRecorder = EventsRecorder<DirectLogoutEvents>() val eventsRecorder = EventsRecorder<DirectLogoutEvents>()
rule.setDefaultDirectLogoutView( rule.setDefaultDirectLogoutView(
state = aDirectLogoutState( state = aDirectLogoutState(
logoutAction = AsyncAction.Confirming, logoutAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
) )
) )
@ -49,7 +49,7 @@ class DefaultDirectLogoutViewTest {
val eventsRecorder = EventsRecorder<DirectLogoutEvents>() val eventsRecorder = EventsRecorder<DirectLogoutEvents>()
rule.setDefaultDirectLogoutView( rule.setDefaultDirectLogoutView(
state = aDirectLogoutState( state = aDirectLogoutState(
logoutAction = AsyncAction.Confirming, logoutAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
) )
) )
@ -63,7 +63,7 @@ class DefaultDirectLogoutViewTest {
val eventsRecorder = EventsRecorder<DirectLogoutEvents>() val eventsRecorder = EventsRecorder<DirectLogoutEvents>()
rule.setDefaultDirectLogoutView( rule.setDefaultDirectLogoutView(
state = aDirectLogoutState( state = aDirectLogoutState(
logoutAction = AsyncAction.Confirming, logoutAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
) )
) )

View file

@ -88,7 +88,7 @@ class DirectLogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
initialState.eventSink.invoke(DirectLogoutEvents.CloseDialogs) initialState.eventSink.invoke(DirectLogoutEvents.CloseDialogs)
val finalState = awaitItem() val finalState = awaitItem()
assertThat(finalState.logoutAction).isEqualTo(AsyncAction.Uninitialized) assertThat(finalState.logoutAction).isEqualTo(AsyncAction.Uninitialized)
@ -104,7 +104,7 @@ class DirectLogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmationState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false)) confirmationState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false))
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java)
@ -129,7 +129,7 @@ class DirectLogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmationState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false)) confirmationState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false))
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java)
@ -161,7 +161,7 @@ class DirectLogoutPresenterTest {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false)) initialState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false))
val confirmationState = awaitItem() val confirmationState = awaitItem()
assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmationState.logoutAction).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmationState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false)) confirmationState.eventSink.invoke(DirectLogoutEvents.Logout(ignoreSdkError = false))
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.logoutAction).isInstanceOf(AsyncAction.Loading::class.java)

View file

@ -67,7 +67,7 @@ class BlockedUsersPresenter @Inject constructor(
when (event) { when (event) {
is BlockedUsersEvents.Unblock -> { is BlockedUsersEvents.Unblock -> {
pendingUserToUnblock = event.userId pendingUserToUnblock = event.userId
unblockUserAction.value = AsyncAction.Confirming unblockUserAction.value = AsyncAction.ConfirmingNoParams
} }
BlockedUsersEvents.ConfirmUnblock -> { BlockedUsersEvents.ConfirmUnblock -> {
pendingUserToUnblock?.let { pendingUserToUnblock?.let {

View file

@ -19,7 +19,7 @@ class BlockedUsersStatePreviewProvider : PreviewParameterProvider<BlockedUsersSt
aBlockedUsersState(), aBlockedUsersState(),
aBlockedUsersState(blockedUsers = aMatrixUserList().map { it.copy(displayName = null, avatarUrl = null) }), aBlockedUsersState(blockedUsers = aMatrixUserList().map { it.copy(displayName = null, avatarUrl = null) }),
aBlockedUsersState(blockedUsers = emptyList()), aBlockedUsersState(blockedUsers = emptyList()),
aBlockedUsersState(unblockUserAction = AsyncAction.Confirming), aBlockedUsersState(unblockUserAction = AsyncAction.ConfirmingNoParams),
aBlockedUsersState(unblockUserAction = AsyncAction.Loading), aBlockedUsersState(unblockUserAction = AsyncAction.Loading),
aBlockedUsersState(unblockUserAction = AsyncAction.Failure(Throwable("Failed to unblock user"))), aBlockedUsersState(unblockUserAction = AsyncAction.Failure(Throwable("Failed to unblock user"))),
aBlockedUsersState(unblockUserAction = AsyncAction.Success(Unit)), aBlockedUsersState(unblockUserAction = AsyncAction.Success(Unit)),

View file

@ -65,7 +65,7 @@ class BlockedUserViewTest {
val eventsRecorder = EventsRecorder<BlockedUsersEvents>() val eventsRecorder = EventsRecorder<BlockedUsersEvents>()
rule.setBlockedUsersView( rule.setBlockedUsersView(
aBlockedUsersState( aBlockedUsersState(
unblockUserAction = AsyncAction.Confirming, unblockUserAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder eventSink = eventsRecorder
), ),
) )
@ -78,7 +78,7 @@ class BlockedUserViewTest {
val eventsRecorder = EventsRecorder<BlockedUsersEvents>() val eventsRecorder = EventsRecorder<BlockedUsersEvents>()
rule.setBlockedUsersView( rule.setBlockedUsersView(
aBlockedUsersState( aBlockedUsersState(
unblockUserAction = AsyncAction.Confirming, unblockUserAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder eventSink = eventsRecorder
), ),
) )

View file

@ -77,7 +77,7 @@ class RoomMembersModerationPresenter @Inject constructor(
coroutineScope.launch { coroutineScope.launch {
selectedMember = event.roomMember selectedMember = event.roomMember
if (event.roomMember.membership == RoomMembershipState.BAN && canBan()) { if (event.roomMember.membership == RoomMembershipState.BAN && canBan()) {
unbanUserAsyncAction.value = AsyncAction.Confirming unbanUserAsyncAction.value = AsyncAction.ConfirmingNoParams
} else { } else {
moderationActions = buildList { moderationActions = buildList {
add(ModerationAction.DisplayProfile(event.roomMember.userId)) add(ModerationAction.DisplayProfile(event.roomMember.userId))
@ -109,7 +109,7 @@ class RoomMembersModerationPresenter @Inject constructor(
coroutineScope.banUser(it.userId, banUserAsyncAction) coroutineScope.banUser(it.userId, banUserAsyncAction)
} }
} else { } else {
banUserAsyncAction.value = AsyncAction.Confirming banUserAsyncAction.value = AsyncAction.ConfirmingNoParams
} }
} }
is RoomMembersModerationEvents.UnbanUser -> { is RoomMembersModerationEvents.UnbanUser -> {
@ -119,7 +119,7 @@ class RoomMembersModerationPresenter @Inject constructor(
coroutineScope.unbanUser(it.userId, unbanUserAsyncAction) coroutineScope.unbanUser(it.userId, unbanUserAsyncAction)
} }
} else { } else {
unbanUserAsyncAction.value = AsyncAction.Confirming unbanUserAsyncAction.value = AsyncAction.ConfirmingNoParams
} }
} }
is RoomMembersModerationEvents.Reset -> { is RoomMembersModerationEvents.Reset -> {

View file

@ -56,11 +56,11 @@ class RoomMembersModerationStatePreviewProvider : PreviewParameterProvider<RoomM
), ),
aRoomMembersModerationState( aRoomMembersModerationState(
selectedRoomMember = anAlice(), selectedRoomMember = anAlice(),
banUserAsyncAction = AsyncAction.Confirming, banUserAsyncAction = AsyncAction.ConfirmingNoParams,
), ),
aRoomMembersModerationState( aRoomMembersModerationState(
selectedRoomMember = anAlice(), selectedRoomMember = anAlice(),
unbanUserAsyncAction = AsyncAction.Confirming, unbanUserAsyncAction = AsyncAction.ConfirmingNoParams,
), ),
aRoomMembersModerationState( aRoomMembersModerationState(
kickUserAsyncAction = AsyncAction.Success(Unit), kickUserAsyncAction = AsyncAction.Success(Unit),

View file

@ -64,7 +64,7 @@ class RolesAndPermissionsPresenter @Inject constructor(
fun handleEvent(event: RolesAndPermissionsEvents) { fun handleEvent(event: RolesAndPermissionsEvents) {
when (event) { when (event) {
is RolesAndPermissionsEvents.ChangeOwnRole -> { is RolesAndPermissionsEvents.ChangeOwnRole -> {
changeOwnRoleAction.value = AsyncAction.Confirming changeOwnRoleAction.value = AsyncAction.ConfirmingNoParams
} }
is RolesAndPermissionsEvents.CancelPendingAction -> { is RolesAndPermissionsEvents.CancelPendingAction -> {
changeOwnRoleAction.value = AsyncAction.Uninitialized changeOwnRoleAction.value = AsyncAction.Uninitialized
@ -77,7 +77,7 @@ class RolesAndPermissionsPresenter @Inject constructor(
is RolesAndPermissionsEvents.ResetPermissions -> if (resetPermissionsAction.value.isConfirming()) { is RolesAndPermissionsEvents.ResetPermissions -> if (resetPermissionsAction.value.isConfirming()) {
coroutineScope.resetPermissions(resetPermissionsAction) coroutineScope.resetPermissions(resetPermissionsAction)
} else { } else {
resetPermissionsAction.value = AsyncAction.Confirming resetPermissionsAction.value = AsyncAction.ConfirmingNoParams
} }
} }
} }

View file

@ -18,7 +18,7 @@ class RolesAndPermissionsStateProvider : PreviewParameterProvider<RolesAndPermis
aRolesAndPermissionsState( aRolesAndPermissionsState(
adminCount = 1, adminCount = 1,
moderatorCount = 2, moderatorCount = 2,
changeOwnRoleAction = AsyncAction.Confirming, changeOwnRoleAction = AsyncAction.ConfirmingNoParams,
), ),
aRolesAndPermissionsState( aRolesAndPermissionsState(
adminCount = 1, adminCount = 1,
@ -33,7 +33,7 @@ class RolesAndPermissionsStateProvider : PreviewParameterProvider<RolesAndPermis
aRolesAndPermissionsState( aRolesAndPermissionsState(
adminCount = 1, adminCount = 1,
moderatorCount = 2, moderatorCount = 2,
resetPermissionsAction = AsyncAction.Confirming, resetPermissionsAction = AsyncAction.ConfirmingNoParams,
), ),
aRolesAndPermissionsState( aRolesAndPermissionsState(
adminCount = 1, adminCount = 1,

View file

@ -134,7 +134,7 @@ class ChangeRolesPresenter @AssistedInject constructor(
is ChangeRolesEvent.Save -> { is ChangeRolesEvent.Save -> {
if (role == RoomMember.Role.ADMIN && selectedUsers != usersWithRole && !saveState.value.isConfirming()) { if (role == RoomMember.Role.ADMIN && selectedUsers != usersWithRole && !saveState.value.isConfirming()) {
// Confirm adding admin // Confirm adding admin
saveState.value = AsyncAction.Confirming saveState.value = AsyncAction.ConfirmingNoParams
} else if (!saveState.value.isLoading()) { } else if (!saveState.value.isLoading()) {
coroutineScope.save(usersWithRole.value, selectedUsers, saveState) coroutineScope.save(usersWithRole.value, selectedUsers, saveState)
} }
@ -145,7 +145,7 @@ class ChangeRolesPresenter @AssistedInject constructor(
is ChangeRolesEvent.Exit -> { is ChangeRolesEvent.Exit -> {
exitState.value = if (exitState.value.isUninitialized() && hasPendingChanges) { exitState.value = if (exitState.value.isUninitialized() && hasPendingChanges) {
// Has pending changes, confirm exit // Has pending changes, confirm exit
AsyncAction.Confirming AsyncAction.ConfirmingNoParams
} else { } else {
// No pending changes, exit immediately // No pending changes, exit immediately
AsyncAction.Success(Unit) AsyncAction.Success(Unit)

View file

@ -36,8 +36,8 @@ class ChangeRolesStateProvider : PreviewParameterProvider<ChangeRolesState> {
searchResults = SearchBarResultState.Results(MembersByRole(aRoomMemberList().take(1).toImmutableList())), searchResults = SearchBarResultState.Results(MembersByRole(aRoomMemberList().take(1).toImmutableList())),
selectedUsers = aMatrixUserList().take(1).toImmutableList(), selectedUsers = aMatrixUserList().take(1).toImmutableList(),
), ),
aChangeRolesStateWithSelectedUsers().copy(exitState = AsyncAction.Confirming), aChangeRolesStateWithSelectedUsers().copy(exitState = AsyncAction.ConfirmingNoParams),
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Confirming), aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.ConfirmingNoParams),
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Loading), aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Loading),
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(Unit)), aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Success(Unit)),
aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Failure(Exception("boom"))), aChangeRolesStateWithSelectedUsers().copy(savingState = AsyncAction.Failure(Exception("boom"))),

View file

@ -95,7 +95,7 @@ class ChangeRoomPermissionsPresenter @AssistedInject constructor(
confirmExitAction = if (!hasChanges || confirmExitAction.isConfirming()) { confirmExitAction = if (!hasChanges || confirmExitAction.isConfirming()) {
AsyncAction.Success(Unit) AsyncAction.Success(Unit)
} else { } else {
AsyncAction.Confirming AsyncAction.ConfirmingNoParams
} }
} }
is ChangeRoomPermissionsEvent.ResetPendingActions -> { is ChangeRoomPermissionsEvent.ResetPendingActions -> {

View file

@ -26,7 +26,7 @@ class ChangeRoomPermissionsStatePreviewProvider : PreviewParameterProvider<Chang
hasChanges = true, hasChanges = true,
saveAction = AsyncAction.Failure(IllegalStateException("Failed to save changes")) saveAction = AsyncAction.Failure(IllegalStateException("Failed to save changes"))
), ),
aChangeRoomPermissionsState(section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, confirmExitAction = AsyncAction.Confirming), aChangeRoomPermissionsState(section = ChangeRoomPermissionsSection.RoomDetails, hasChanges = true, confirmExitAction = AsyncAction.ConfirmingNoParams),
) )
} }

View file

@ -142,7 +142,7 @@ class RoomMembersModerationPresenterTest {
awaitItem().eventSink(RoomMembersModerationEvents.SelectRoomMember(selectedMember)) awaitItem().eventSink(RoomMembersModerationEvents.SelectRoomMember(selectedMember))
with(awaitItem()) { with(awaitItem()) {
assertThat(selectedRoomMember).isNotNull() assertThat(selectedRoomMember).isNotNull()
assertThat(unbanUserAsyncAction).isEqualTo(AsyncAction.Confirming) assertThat(unbanUserAsyncAction).isEqualTo(AsyncAction.ConfirmingNoParams)
} }
} }
} }
@ -193,7 +193,7 @@ class RoomMembersModerationPresenterTest {
awaitItem().eventSink(RoomMembersModerationEvents.SelectRoomMember(selectedMember)) awaitItem().eventSink(RoomMembersModerationEvents.SelectRoomMember(selectedMember))
awaitItem().eventSink(RoomMembersModerationEvents.BanUser) awaitItem().eventSink(RoomMembersModerationEvents.BanUser)
val confirmingState = awaitItem() val confirmingState = awaitItem()
assertThat(confirmingState.banUserAsyncAction).isEqualTo(AsyncAction.Confirming) assertThat(confirmingState.banUserAsyncAction).isEqualTo(AsyncAction.ConfirmingNoParams)
// Confirm // Confirm
confirmingState.eventSink(RoomMembersModerationEvents.BanUser) confirmingState.eventSink(RoomMembersModerationEvents.BanUser)

View file

@ -130,7 +130,7 @@ class RoomMembersModerationViewTest {
val roomMember = anAlice() val roomMember = anAlice()
val state = aRoomMembersModerationState( val state = aRoomMembersModerationState(
selectedRoomMember = roomMember, selectedRoomMember = roomMember,
banUserAsyncAction = AsyncAction.Confirming, banUserAsyncAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder eventSink = eventsRecorder
) )
rule.setRoomMembersModerationView( rule.setRoomMembersModerationView(
@ -147,7 +147,7 @@ class RoomMembersModerationViewTest {
val roomMember = anAlice() val roomMember = anAlice()
val state = aRoomMembersModerationState( val state = aRoomMembersModerationState(
selectedRoomMember = roomMember, selectedRoomMember = roomMember,
banUserAsyncAction = AsyncAction.Confirming, banUserAsyncAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder eventSink = eventsRecorder
) )
rule.setRoomMembersModerationView( rule.setRoomMembersModerationView(
@ -164,7 +164,7 @@ class RoomMembersModerationViewTest {
val roomMember = anAlice() val roomMember = anAlice()
val state = aRoomMembersModerationState( val state = aRoomMembersModerationState(
selectedRoomMember = roomMember, selectedRoomMember = roomMember,
unbanUserAsyncAction = AsyncAction.Confirming, unbanUserAsyncAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder eventSink = eventsRecorder
) )
rule.setRoomMembersModerationView( rule.setRoomMembersModerationView(
@ -181,7 +181,7 @@ class RoomMembersModerationViewTest {
val roomMember = anAlice() val roomMember = anAlice()
val state = aRoomMembersModerationState( val state = aRoomMembersModerationState(
selectedRoomMember = roomMember, selectedRoomMember = roomMember,
unbanUserAsyncAction = AsyncAction.Confirming, unbanUserAsyncAction = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder eventSink = eventsRecorder
) )
rule.setRoomMembersModerationView( rule.setRoomMembersModerationView(

View file

@ -52,7 +52,7 @@ class RolesAndPermissionPresenterTest {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(RolesAndPermissionsEvents.ChangeOwnRole) initialState.eventSink(RolesAndPermissionsEvents.ChangeOwnRole)
assertThat(awaitItem().changeOwnRoleAction).isEqualTo(AsyncAction.Confirming) assertThat(awaitItem().changeOwnRoleAction).isEqualTo(AsyncAction.ConfirmingNoParams)
} }
} }

View file

@ -98,7 +98,7 @@ class RolesAndPermissionsViewTest {
val recorder = EventsRecorder<RolesAndPermissionsEvents>() val recorder = EventsRecorder<RolesAndPermissionsEvents>()
rule.setRolesAndPermissionsView( rule.setRolesAndPermissionsView(
state = aRolesAndPermissionsState( state = aRolesAndPermissionsState(
resetPermissionsAction = AsyncAction.Confirming, resetPermissionsAction = AsyncAction.ConfirmingNoParams,
eventSink = recorder, eventSink = recorder,
), ),
) )
@ -111,7 +111,7 @@ class RolesAndPermissionsViewTest {
val recorder = EventsRecorder<RolesAndPermissionsEvents>() val recorder = EventsRecorder<RolesAndPermissionsEvents>()
rule.setRolesAndPermissionsView( rule.setRolesAndPermissionsView(
state = aRolesAndPermissionsState( state = aRolesAndPermissionsState(
resetPermissionsAction = AsyncAction.Confirming, resetPermissionsAction = AsyncAction.ConfirmingNoParams,
eventSink = recorder, eventSink = recorder,
), ),
) )
@ -124,7 +124,7 @@ class RolesAndPermissionsViewTest {
val recorder = EventsRecorder<RolesAndPermissionsEvents>() val recorder = EventsRecorder<RolesAndPermissionsEvents>()
rule.setRolesAndPermissionsView( rule.setRolesAndPermissionsView(
state = aRolesAndPermissionsState( state = aRolesAndPermissionsState(
changeOwnRoleAction = AsyncAction.Confirming, changeOwnRoleAction = AsyncAction.ConfirmingNoParams,
eventSink = recorder, eventSink = recorder,
), ),
) )
@ -138,7 +138,7 @@ class RolesAndPermissionsViewTest {
val recorder = EventsRecorder<RolesAndPermissionsEvents>() val recorder = EventsRecorder<RolesAndPermissionsEvents>()
rule.setRolesAndPermissionsView( rule.setRolesAndPermissionsView(
state = aRolesAndPermissionsState( state = aRolesAndPermissionsState(
changeOwnRoleAction = AsyncAction.Confirming, changeOwnRoleAction = AsyncAction.ConfirmingNoParams,
eventSink = recorder, eventSink = recorder,
), ),
) )
@ -152,7 +152,7 @@ class RolesAndPermissionsViewTest {
val recorder = EventsRecorder<RolesAndPermissionsEvents>() val recorder = EventsRecorder<RolesAndPermissionsEvents>()
rule.setRolesAndPermissionsView( rule.setRolesAndPermissionsView(
state = aRolesAndPermissionsState( state = aRolesAndPermissionsState(
changeOwnRoleAction = AsyncAction.Confirming, changeOwnRoleAction = AsyncAction.ConfirmingNoParams,
eventSink = recorder, eventSink = recorder,
), ),
) )

View file

@ -229,7 +229,7 @@ class ChangeRolesPresenterTest {
awaitItem().eventSink(ChangeRolesEvent.Exit) awaitItem().eventSink(ChangeRolesEvent.Exit)
val confirmingState = awaitItem() val confirmingState = awaitItem()
assertThat(confirmingState.exitState).isEqualTo(AsyncAction.Confirming) assertThat(confirmingState.exitState).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmingState.eventSink(ChangeRolesEvent.CancelExit) confirmingState.eventSink(ChangeRolesEvent.CancelExit)
assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Uninitialized) assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Uninitialized)
@ -257,7 +257,7 @@ class ChangeRolesPresenterTest {
skipItems(1) skipItems(1)
updatedState.eventSink(ChangeRolesEvent.Exit) updatedState.eventSink(ChangeRolesEvent.Exit)
assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Confirming) assertThat(awaitItem().exitState).isEqualTo(AsyncAction.ConfirmingNoParams)
updatedState.eventSink(ChangeRolesEvent.Exit) updatedState.eventSink(ChangeRolesEvent.Exit)
assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Success(Unit)) assertThat(awaitItem().exitState).isEqualTo(AsyncAction.Success(Unit))
@ -284,7 +284,7 @@ class ChangeRolesPresenterTest {
initialState.eventSink(ChangeRolesEvent.UserSelectionToggled(MatrixUser(A_USER_ID_2))) initialState.eventSink(ChangeRolesEvent.UserSelectionToggled(MatrixUser(A_USER_ID_2)))
awaitItem().eventSink(ChangeRolesEvent.Save) awaitItem().eventSink(ChangeRolesEvent.Save)
val confirmingState = awaitItem() val confirmingState = awaitItem()
assertThat(confirmingState.savingState).isEqualTo(AsyncAction.Confirming) assertThat(confirmingState.savingState).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmingState.eventSink(ChangeRolesEvent.Save) confirmingState.eventSink(ChangeRolesEvent.Save)
assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(Unit)) assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Success(Unit))
@ -309,7 +309,7 @@ class ChangeRolesPresenterTest {
awaitItem().eventSink(ChangeRolesEvent.Save) awaitItem().eventSink(ChangeRolesEvent.Save)
val confirmingState = awaitItem() val confirmingState = awaitItem()
assertThat(confirmingState.savingState).isEqualTo(AsyncAction.Confirming) assertThat(confirmingState.savingState).isEqualTo(AsyncAction.ConfirmingNoParams)
confirmingState.eventSink(ChangeRolesEvent.CancelSave) confirmingState.eventSink(ChangeRolesEvent.CancelSave)
assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Uninitialized) assertThat(awaitItem().savingState).isEqualTo(AsyncAction.Uninitialized)

View file

@ -140,7 +140,7 @@ class ChangeRolesViewTest {
rule.setChangeRolesContent( rule.setChangeRolesContent(
state = aChangeRolesState( state = aChangeRolesState(
isSearchActive = true, isSearchActive = true,
exitState = AsyncAction.Confirming, exitState = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
), ),
) )
@ -156,7 +156,7 @@ class ChangeRolesViewTest {
rule.setChangeRolesContent( rule.setChangeRolesContent(
state = aChangeRolesState( state = aChangeRolesState(
isSearchActive = true, isSearchActive = true,
exitState = AsyncAction.Confirming, exitState = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
), ),
) )
@ -173,7 +173,7 @@ class ChangeRolesViewTest {
state = aChangeRolesState( state = aChangeRolesState(
role = RoomMember.Role.ADMIN, role = RoomMember.Role.ADMIN,
isSearchActive = true, isSearchActive = true,
savingState = AsyncAction.Confirming, savingState = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
), ),
) )
@ -190,7 +190,7 @@ class ChangeRolesViewTest {
state = aChangeRolesState( state = aChangeRolesState(
role = RoomMember.Role.ADMIN, role = RoomMember.Role.ADMIN,
isSearchActive = true, isSearchActive = true,
savingState = AsyncAction.Confirming, savingState = AsyncAction.ConfirmingNoParams,
eventSink = eventsRecorder, eventSink = eventsRecorder,
), ),
) )

View file

@ -267,7 +267,7 @@ class ChangeRoomPermissionsPresenterTest {
assertThat(awaitItem().hasChanges).isTrue() assertThat(awaitItem().hasChanges).isTrue()
state.eventSink(ChangeRoomPermissionsEvent.Exit) state.eventSink(ChangeRoomPermissionsEvent.Exit)
assertThat(awaitItem().confirmExitAction).isEqualTo(AsyncAction.Confirming) assertThat(awaitItem().confirmExitAction).isEqualTo(AsyncAction.ConfirmingNoParams)
state.eventSink(ChangeRoomPermissionsEvent.Exit) state.eventSink(ChangeRoomPermissionsEvent.Exit)
assertThat(awaitItem().confirmExitAction).isEqualTo(AsyncAction.Success(Unit)) assertThat(awaitItem().confirmExitAction).isEqualTo(AsyncAction.Success(Unit))

View file

@ -82,7 +82,7 @@ class ChangeRoomPermissionsViewTest {
state = aChangeRoomPermissionsState( state = aChangeRoomPermissionsState(
section = ChangeRoomPermissionsSection.RoomDetails, section = ChangeRoomPermissionsSection.RoomDetails,
hasChanges = true, hasChanges = true,
confirmExitAction = AsyncAction.Confirming, confirmExitAction = AsyncAction.ConfirmingNoParams,
eventSink = recorder, eventSink = recorder,
), ),
eventsRecorder = recorder, eventsRecorder = recorder,
@ -98,7 +98,7 @@ class ChangeRoomPermissionsViewTest {
state = aChangeRoomPermissionsState( state = aChangeRoomPermissionsState(
section = ChangeRoomPermissionsSection.RoomDetails, section = ChangeRoomPermissionsSection.RoomDetails,
hasChanges = true, hasChanges = true,
confirmExitAction = AsyncAction.Confirming, confirmExitAction = AsyncAction.ConfirmingNoParams,
eventSink = recorder, eventSink = recorder,
), ),
eventsRecorder = recorder, eventsRecorder = recorder,

View file

@ -40,7 +40,7 @@ class SecureBackupDisablePresenter @Inject constructor(
is SecureBackupDisableEvents.DisableBackup -> if (disableAction.value.isConfirming()) { is SecureBackupDisableEvents.DisableBackup -> if (disableAction.value.isConfirming()) {
coroutineScope.disableBackup(disableAction) coroutineScope.disableBackup(disableAction)
} else { } else {
disableAction.value = AsyncAction.Confirming disableAction.value = AsyncAction.ConfirmingNoParams
} }
SecureBackupDisableEvents.DismissDialogs -> { SecureBackupDisableEvents.DismissDialogs -> {
disableAction.value = AsyncAction.Uninitialized disableAction.value = AsyncAction.Uninitialized

View file

@ -15,7 +15,7 @@ open class SecureBackupDisableStateProvider : PreviewParameterProvider<SecureBac
override val values: Sequence<SecureBackupDisableState> override val values: Sequence<SecureBackupDisableState>
get() = sequenceOf( get() = sequenceOf(
aSecureBackupDisableState(), aSecureBackupDisableState(),
aSecureBackupDisableState(disableAction = AsyncAction.Confirming), aSecureBackupDisableState(disableAction = AsyncAction.ConfirmingNoParams),
aSecureBackupDisableState(disableAction = AsyncAction.Loading), aSecureBackupDisableState(disableAction = AsyncAction.Loading),
aSecureBackupDisableState(disableAction = AsyncAction.Failure(Exception("Failed to disable"))), aSecureBackupDisableState(disableAction = AsyncAction.Failure(Exception("Failed to disable"))),
// Add other states here // Add other states here

View file

@ -47,7 +47,7 @@ class SecureBackupDisablePresenterTest {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(SecureBackupDisableEvents.DisableBackup) initialState.eventSink(SecureBackupDisableEvents.DisableBackup)
val state = awaitItem() val state = awaitItem()
assertThat(state.disableAction).isEqualTo(AsyncAction.Confirming) assertThat(state.disableAction).isEqualTo(AsyncAction.ConfirmingNoParams)
initialState.eventSink(SecureBackupDisableEvents.DismissDialogs) initialState.eventSink(SecureBackupDisableEvents.DismissDialogs)
val finalState = awaitItem() val finalState = awaitItem()
assertThat(finalState.disableAction).isEqualTo(AsyncAction.Uninitialized) assertThat(finalState.disableAction).isEqualTo(AsyncAction.Uninitialized)
@ -64,7 +64,7 @@ class SecureBackupDisablePresenterTest {
assertThat(initialState.disableAction).isEqualTo(AsyncAction.Uninitialized) assertThat(initialState.disableAction).isEqualTo(AsyncAction.Uninitialized)
initialState.eventSink(SecureBackupDisableEvents.DisableBackup) initialState.eventSink(SecureBackupDisableEvents.DisableBackup)
val state = awaitItem() val state = awaitItem()
assertThat(state.disableAction).isEqualTo(AsyncAction.Confirming) assertThat(state.disableAction).isEqualTo(AsyncAction.ConfirmingNoParams)
initialState.eventSink(SecureBackupDisableEvents.DisableBackup) initialState.eventSink(SecureBackupDisableEvents.DisableBackup)
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.disableAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.disableAction).isInstanceOf(AsyncAction.Loading::class.java)
@ -88,7 +88,7 @@ class SecureBackupDisablePresenterTest {
assertThat(initialState.disableAction).isEqualTo(AsyncAction.Uninitialized) assertThat(initialState.disableAction).isEqualTo(AsyncAction.Uninitialized)
initialState.eventSink(SecureBackupDisableEvents.DisableBackup) initialState.eventSink(SecureBackupDisableEvents.DisableBackup)
val state = awaitItem() val state = awaitItem()
assertThat(state.disableAction).isEqualTo(AsyncAction.Confirming) assertThat(state.disableAction).isEqualTo(AsyncAction.ConfirmingNoParams)
initialState.eventSink(SecureBackupDisableEvents.DisableBackup) initialState.eventSink(SecureBackupDisableEvents.DisableBackup)
val loadingState = awaitItem() val loadingState = awaitItem()
assertThat(loadingState.disableAction).isInstanceOf(AsyncAction.Loading::class.java) assertThat(loadingState.disableAction).isInstanceOf(AsyncAction.Loading::class.java)

View file

@ -158,7 +158,7 @@ fun VerifySelfSessionView(
latestOnSuccessLogout(state.signOutAction.data) latestOnSuccessLogout(state.signOutAction.data)
} }
} }
AsyncAction.Confirming, is AsyncAction.Confirming,
is AsyncAction.Failure, is AsyncAction.Failure,
AsyncAction.Uninitialized -> Unit AsyncAction.Uninitialized -> Unit
} }

View file

@ -26,7 +26,9 @@ sealed interface AsyncAction<out T> {
/** /**
* Represents an operation that is currently waiting for user confirmation. * Represents an operation that is currently waiting for user confirmation.
*/ */
data object Confirming : AsyncAction<Nothing> interface Confirming : AsyncAction<Nothing>
data object ConfirmingNoParams : Confirming
/** /**
* Represents an operation that is currently ongoing. * Represents an operation that is currently ongoing.
@ -70,7 +72,7 @@ sealed interface AsyncAction<out T> {
fun isUninitialized(): Boolean = this == Uninitialized fun isUninitialized(): Boolean = this == Uninitialized
fun isConfirming(): Boolean = this == Confirming fun isConfirming(): Boolean = this is Confirming
fun isLoading(): Boolean = this == Loading fun isLoading(): Boolean = this == Loading

View file

@ -14,7 +14,7 @@ open class AsyncActionProvider : PreviewParameterProvider<AsyncAction<Unit>> {
override val values: Sequence<AsyncAction<Unit>> override val values: Sequence<AsyncAction<Unit>>
get() = sequenceOf( get() = sequenceOf(
AsyncAction.Uninitialized, AsyncAction.Uninitialized,
AsyncAction.Confirming, AsyncAction.ConfirmingNoParams,
AsyncAction.Loading, AsyncAction.Loading,
AsyncAction.Failure(Exception("An error occurred")), AsyncAction.Failure(Exception("An error occurred")),
AsyncAction.Success(Unit), AsyncAction.Success(Unit),

View file

@ -42,7 +42,7 @@ fun <T> AsyncActionView(
) { ) {
when (async) { when (async) {
AsyncAction.Uninitialized -> Unit AsyncAction.Uninitialized -> Unit
AsyncAction.Confirming -> confirmationDialog() is AsyncAction.Confirming -> confirmationDialog()
is AsyncAction.Loading -> progressDialog() is AsyncAction.Loading -> progressDialog()
is AsyncAction.Failure -> { is AsyncAction.Failure -> {
if (onRetry == null) { if (onRetry == null) {

View file

@ -122,7 +122,7 @@ private fun ColumnScope.TroubleshootTestView(
private fun ColumnScope.TroubleshootNotificationsContent(state: TroubleshootNotificationsState) { private fun ColumnScope.TroubleshootNotificationsContent(state: TroubleshootNotificationsState) {
when (state.testSuiteState.mainState) { when (state.testSuiteState.mainState) {
AsyncAction.Loading, AsyncAction.Loading,
AsyncAction.Confirming, is AsyncAction.Confirming,
is AsyncAction.Success, is AsyncAction.Success,
is AsyncAction.Failure -> { is AsyncAction.Failure -> {
TestSuiteView( TestSuiteView(
@ -150,7 +150,7 @@ private fun ColumnScope.TroubleshootNotificationsContent(state: TroubleshootNoti
}) })
RunTestButton(state = state) RunTestButton(state = state)
} }
AsyncAction.Confirming -> { is AsyncAction.Confirming -> {
ListItem(headlineContent = { ListItem(headlineContent = {
Text( Text(
text = stringResource(id = R.string.troubleshoot_notifications_screen_waiting) text = stringResource(id = R.string.troubleshoot_notifications_screen_waiting)

View file

@ -102,7 +102,7 @@ fun List<NotificationTroubleshootTestState>.computeMainState(): AsyncAction<Unit
isRunning -> AsyncAction.Loading isRunning -> AsyncAction.Loading
else -> { else -> {
if (any { it.status is NotificationTroubleshootTestState.Status.WaitingForUser }) { if (any { it.status is NotificationTroubleshootTestState.Status.WaitingForUser }) {
AsyncAction.Confirming AsyncAction.ConfirmingNoParams
} else if (any { it.status is NotificationTroubleshootTestState.Status.Failure }) { } else if (any { it.status is NotificationTroubleshootTestState.Status.Failure }) {
AsyncAction.Failure(Exception("Some tests failed")) AsyncAction.Failure(Exception("Some tests failed"))
} else { } else {