Use AsyncView in ConfigureRoomView

This commit is contained in:
Benoit Marty 2023-11-03 16:16:13 +01:00 committed by Benoit Marty
parent 59c01b1764
commit ed450c49b4

View file

@ -36,7 +36,6 @@ import androidx.compose.material.ModalBottomSheetValue
import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.material.rememberModalBottomSheetState
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -49,13 +48,11 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.features.createroom.impl.R import io.element.android.features.createroom.impl.R
import io.element.android.features.createroom.impl.components.RoomPrivacyOption 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.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.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.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.aliasScreenTitle 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.Scaffold
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
@ -84,12 +81,6 @@ fun ConfigureRoomView(
initialValue = ModalBottomSheetValue.Hidden, initialValue = ModalBottomSheetValue.Hidden,
) )
if (state.createRoomAction is Async.Success) {
LaunchedEffect(state.createRoomAction) {
onRoomCreated(state.createRoomAction.data)
}
}
fun onAvatarClicked() { fun onAvatarClicked() {
focusManager.clearFocus() focusManager.clearFocus()
coroutineScope.launch { coroutineScope.launch {
@ -158,21 +149,15 @@ fun ConfigureRoomView(
onActionSelected = { state.eventSink(ConfigureRoomEvents.HandleAvatarAction(it)) } onActionSelected = { state.eventSink(ConfigureRoomEvents.HandleAvatarAction(it)) }
) )
when (state.createRoomAction) { val errorMessage = stringResource(R.string.screen_create_room_error_creating_room)
is Async.Loading -> { AsyncView(
ProgressDialog(text = stringResource(CommonStrings.common_creating_room)) async = state.createRoomAction,
} progressText = stringResource(CommonStrings.common_creating_room),
onSuccess = { onRoomCreated(it) },
is Async.Failure -> { errorTransform = { errorMessage },
RetryDialog( onRetry = { state.eventSink(ConfigureRoomEvents.CreateRoom(state.config)) },
content = stringResource(R.string.screen_create_room_error_creating_room), onErrorDismiss = { state.eventSink(ConfigureRoomEvents.CancelCreateRoom) },
onDismiss = { state.eventSink(ConfigureRoomEvents.CancelCreateRoom) }, )
onRetry = { state.eventSink(ConfigureRoomEvents.CreateRoom(state.config)) },
)
}
else -> Unit
}
PermissionsView( PermissionsView(
state = state.cameraPermissionState, state = state.cameraPermissionState,