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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -26,7 +26,7 @@ class ChangeRoomPermissionsStatePreviewProvider : PreviewParameterProvider<Chang
hasChanges = true,
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),
)
}