RoomDetailsEditEvents -> RoomDetailsEditEvent

This commit is contained in:
Benoit Marty 2025-12-03 17:31:07 +01:00 committed by Benoit Marty
parent 4b0fb341b6
commit 82a32371cc
7 changed files with 100 additions and 100 deletions

View file

@ -10,11 +10,11 @@ package io.element.android.features.roomdetailsedit.impl
import io.element.android.libraries.matrix.ui.media.AvatarAction
sealed interface RoomDetailsEditEvents {
data class HandleAvatarAction(val action: AvatarAction) : RoomDetailsEditEvents
data class UpdateRoomName(val name: String) : RoomDetailsEditEvents
data class UpdateRoomTopic(val topic: String) : RoomDetailsEditEvents
data object OnBackPress : RoomDetailsEditEvents
data object Save : RoomDetailsEditEvents
data object CloseDialog : RoomDetailsEditEvents
sealed interface RoomDetailsEditEvent {
data class HandleAvatarAction(val action: AvatarAction) : RoomDetailsEditEvent
data class UpdateRoomName(val name: String) : RoomDetailsEditEvent
data class UpdateRoomTopic(val topic: String) : RoomDetailsEditEvent
data object OnBackPress : RoomDetailsEditEvent
data object Save : RoomDetailsEditEvent
data object CloseDialog : RoomDetailsEditEvent
}

View file

@ -139,9 +139,9 @@ class RoomDetailsEditPresenter(
val saveAction: MutableState<AsyncAction<Unit>> = remember { mutableStateOf(AsyncAction.Uninitialized) }
val localCoroutineScope = rememberCoroutineScope()
fun handleEvent(event: RoomDetailsEditEvents) {
fun handleEvent(event: RoomDetailsEditEvent) {
when (event) {
is RoomDetailsEditEvents.Save -> localCoroutineScope.saveChanges(
is RoomDetailsEditEvent.Save -> localCoroutineScope.saveChanges(
currentNameTrimmed = roomRawNameTrimmed,
newNameTrimmed = roomRawNameEdited.trim(),
currentTopicTrimmed = roomTopicTrimmed,
@ -150,7 +150,7 @@ class RoomDetailsEditPresenter(
newAvatarUri = roomAvatarUriEdited?.toUri(),
action = saveAction,
)
is RoomDetailsEditEvents.HandleAvatarAction -> {
is RoomDetailsEditEvent.HandleAvatarAction -> {
when (event.action) {
AvatarAction.ChoosePhoto -> galleryImagePicker.launch()
AvatarAction.TakePhoto -> if (cameraPermissionState.permissionGranted) {
@ -166,10 +166,10 @@ class RoomDetailsEditPresenter(
}
}
is RoomDetailsEditEvents.UpdateRoomName -> roomRawNameEdited = event.name
is RoomDetailsEditEvents.UpdateRoomTopic -> roomTopicEdited = event.topic
RoomDetailsEditEvents.CloseDialog -> saveAction.value = AsyncAction.Uninitialized
RoomDetailsEditEvents.OnBackPress -> if (saveButtonEnabled.not() || saveAction.value == AsyncAction.ConfirmingCancellation) {
is RoomDetailsEditEvent.UpdateRoomName -> roomRawNameEdited = event.name
is RoomDetailsEditEvent.UpdateRoomTopic -> roomTopicEdited = event.topic
RoomDetailsEditEvent.CloseDialog -> saveAction.value = AsyncAction.Uninitialized
RoomDetailsEditEvent.OnBackPress -> if (saveButtonEnabled.not() || saveAction.value == AsyncAction.ConfirmingCancellation) {
// No changes to save or already confirming exit without saving
saveAction.value = AsyncAction.Success(Unit)
} else {

View file

@ -28,5 +28,5 @@ data class RoomDetailsEditState(
val saveAction: AsyncAction<Unit>,
val cameraPermissionState: PermissionsState,
val isSpace: Boolean,
val eventSink: (RoomDetailsEditEvents) -> Unit
val eventSink: (RoomDetailsEditEvent) -> Unit
)

View file

@ -45,7 +45,7 @@ fun aRoomDetailsEditState(
saveAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
cameraPermissionState: PermissionsState = aPermissionsState(showDialog = false),
isSpace: Boolean = false,
eventSink: (RoomDetailsEditEvents) -> Unit = {},
eventSink: (RoomDetailsEditEvent) -> Unit = {},
) = RoomDetailsEditState(
roomId = roomId,
roomRawName = roomRawName,

View file

@ -64,7 +64,7 @@ fun RoomDetailsEditView(
}
BackHandler {
state.eventSink(RoomDetailsEditEvents.OnBackPress)
state.eventSink(RoomDetailsEditEvent.OnBackPress)
}
Scaffold(
modifier = modifier.clearFocusOnTap(focusManager),
@ -74,7 +74,7 @@ fun RoomDetailsEditView(
navigationIcon = {
BackButton(
onClick = {
state.eventSink(RoomDetailsEditEvents.OnBackPress)
state.eventSink(RoomDetailsEditEvent.OnBackPress)
}
)
},
@ -84,7 +84,7 @@ fun RoomDetailsEditView(
enabled = state.saveButtonEnabled,
onClick = {
focusManager.clearFocus()
state.eventSink(RoomDetailsEditEvents.Save)
state.eventSink(RoomDetailsEditEvent.Save)
},
)
}
@ -121,7 +121,7 @@ fun RoomDetailsEditView(
placeholder = stringResource(CommonStrings.common_room_name_placeholder),
singleLine = true,
readOnly = !state.canChangeName,
onValueChange = { state.eventSink(RoomDetailsEditEvents.UpdateRoomName(it)) },
onValueChange = { state.eventSink(RoomDetailsEditEvent.UpdateRoomName(it)) },
)
Spacer(modifier = Modifier.height(32.dp))
@ -136,7 +136,7 @@ fun RoomDetailsEditView(
},
maxLines = 10,
readOnly = !state.canChangeTopic,
onValueChange = { state.eventSink(RoomDetailsEditEvents.UpdateRoomTopic(it)) },
onValueChange = { state.eventSink(RoomDetailsEditEvent.UpdateRoomTopic(it)) },
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.Sentences,
),
@ -147,7 +147,7 @@ fun RoomDetailsEditView(
actions = state.avatarActions,
isVisible = isAvatarActionsSheetVisible.value,
onDismiss = { isAvatarActionsSheetVisible.value = false },
onSelectAction = { state.eventSink(RoomDetailsEditEvents.HandleAvatarAction(it)) }
onSelectAction = { state.eventSink(RoomDetailsEditEvent.HandleAvatarAction(it)) }
)
AsyncActionView(
async = state.saveAction,
@ -159,15 +159,15 @@ fun RoomDetailsEditView(
confirmationDialog = {
if (state.saveAction == AsyncAction.ConfirmingCancellation) {
SaveChangesDialog(
onSaveClick = { state.eventSink(RoomDetailsEditEvents.Save) },
onDiscardClick = { state.eventSink(RoomDetailsEditEvents.OnBackPress) },
onDismiss = { state.eventSink(RoomDetailsEditEvents.CloseDialog) }
onSaveClick = { state.eventSink(RoomDetailsEditEvent.Save) },
onDiscardClick = { state.eventSink(RoomDetailsEditEvent.OnBackPress) },
onDismiss = { state.eventSink(RoomDetailsEditEvent.CloseDialog) }
)
}
},
onSuccess = { onDone() },
errorMessage = { stringResource(R.string.screen_room_details_edition_error) },
onErrorDismiss = { state.eventSink(RoomDetailsEditEvents.CloseDialog) }
onErrorDismiss = { state.eventSink(RoomDetailsEditEvent.CloseDialog) }
)
PermissionsView(