From c6ee35f567ab2084f053e0df0f1661163edc1254 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 3 Nov 2023 16:16:13 +0100 Subject: [PATCH] Use AsyncView in ConfigureRoomView --- .../impl/configureroom/ConfigureRoomView.kt | 37 ++++++------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt index 8c4de1af33..5792220917 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt @@ -36,7 +36,6 @@ import androidx.compose.material.ModalBottomSheetValue import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -49,13 +48,11 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.features.createroom.impl.R import io.element.android.features.createroom.impl.components.RoomPrivacyOption -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.button.BackButton -import io.element.android.libraries.designsystem.components.dialogs.RetryDialog -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 @@ -84,12 +81,6 @@ fun ConfigureRoomView( initialValue = ModalBottomSheetValue.Hidden, ) - if (state.createRoomAction is Async.Success) { - LaunchedEffect(state.createRoomAction) { - onRoomCreated(state.createRoomAction.data) - } - } - fun onAvatarClicked() { focusManager.clearFocus() coroutineScope.launch { @@ -158,21 +149,15 @@ fun ConfigureRoomView( onActionSelected = { state.eventSink(ConfigureRoomEvents.HandleAvatarAction(it)) } ) - when (state.createRoomAction) { - is Async.Loading -> { - ProgressDialog(text = stringResource(CommonStrings.common_creating_room)) - } - - is Async.Failure -> { - RetryDialog( - content = stringResource(R.string.screen_create_room_error_creating_room), - onDismiss = { state.eventSink(ConfigureRoomEvents.CancelCreateRoom) }, - onRetry = { state.eventSink(ConfigureRoomEvents.CreateRoom(state.config)) }, - ) - } - - else -> Unit - } + val errorMessage = stringResource(R.string.screen_create_room_error_creating_room) + AsyncView( + async = state.createRoomAction, + progressText = stringResource(CommonStrings.common_creating_room), + onSuccess = { onRoomCreated(it) }, + errorTransform = { errorMessage }, + onRetry = { state.eventSink(ConfigureRoomEvents.CreateRoom(state.config)) }, + onErrorDismiss = { state.eventSink(ConfigureRoomEvents.CancelCreateRoom) }, + ) PermissionsView( state = state.cameraPermissionState,