RoomDetailsEditEvents -> RoomDetailsEditEvent
This commit is contained in:
parent
4b0fb341b6
commit
82a32371cc
7 changed files with 100 additions and 100 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue