From fb4216c82734c144aedf5f765cb6240ae7114973 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 3 Nov 2023 16:41:09 +0100 Subject: [PATCH] Use AsyncView in RoomDetailsEditView --- .../impl/edit/RoomDetailsEditView.kt | 34 +++++-------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt index 3d0de05d34..90ee19c115 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/edit/RoomDetailsEditView.kt @@ -36,7 +36,6 @@ import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusManager @@ -47,14 +46,12 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.features.roomdetails.impl.R -import io.element.android.libraries.architecture.Async import io.element.android.libraries.designsystem.components.LabelledTextField -import io.element.android.libraries.designsystem.components.ProgressDialog +import io.element.android.libraries.designsystem.components.async.AsyncView import io.element.android.libraries.designsystem.components.avatar.AvatarSize import io.element.android.libraries.designsystem.components.button.BackButton -import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog -import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.designsystem.theme.aliasScreenTitle import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text @@ -174,26 +171,13 @@ fun RoomDetailsEditView( onActionSelected = { state.eventSink(RoomDetailsEditEvents.HandleAvatarAction(it)) } ) - when (state.saveAction) { - is Async.Loading -> { - ProgressDialog(text = stringResource(R.string.screen_room_details_updating_room)) - } - - is Async.Failure -> { - ErrorDialog( - content = stringResource(R.string.screen_room_details_edition_error), - onDismiss = { state.eventSink(RoomDetailsEditEvents.CancelSaveChanges) }, - ) - } - - is Async.Success -> { - LaunchedEffect(state.saveAction) { - onRoomEdited() - } - } - - else -> Unit - } + AsyncView( + async = state.saveAction, + progressText = stringResource(R.string.screen_room_details_updating_room), + onSuccess = { onRoomEdited() }, + errorMessage = { stringResource(R.string.screen_room_details_edition_error) }, + onErrorDismiss = { state.eventSink(RoomDetailsEditEvents.CancelSaveChanges) } + ) PermissionsView( state = state.cameraPermissionState,