mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 06:55:41 +00:00
Use AsyncView in CreateRoomRootView
This commit is contained in:
committed by
Benoit Marty
parent
c6ee35f567
commit
662b1f8f50
+16
-31
@@ -30,7 +30,6 @@ import androidx.compose.foundation.layout.size
|
|||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
@@ -38,12 +37,10 @@ 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.UserListView
|
import io.element.android.features.createroom.impl.components.UserListView
|
||||||
import io.element.android.libraries.architecture.Async
|
import io.element.android.libraries.designsystem.components.async.AsyncView
|
||||||
import io.element.android.libraries.designsystem.components.ProgressDialog
|
|
||||||
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.Icon
|
import io.element.android.libraries.designsystem.theme.components.Icon
|
||||||
import io.element.android.libraries.designsystem.theme.components.Scaffold
|
import io.element.android.libraries.designsystem.theme.components.Scaffold
|
||||||
@@ -64,12 +61,6 @@ fun CreateRoomRootView(
|
|||||||
onOpenDM: (RoomId) -> Unit = {},
|
onOpenDM: (RoomId) -> Unit = {},
|
||||||
onInviteFriendsClicked: () -> Unit = {},
|
onInviteFriendsClicked: () -> Unit = {},
|
||||||
) {
|
) {
|
||||||
if (state.startDmAction is Async.Success) {
|
|
||||||
LaunchedEffect(state.startDmAction) {
|
|
||||||
onOpenDM(state.startDmAction.data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
modifier = modifier.fillMaxWidth(),
|
modifier = modifier.fillMaxWidth(),
|
||||||
topBar = {
|
topBar = {
|
||||||
@@ -102,26 +93,20 @@ fun CreateRoomRootView(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
when (state.startDmAction) {
|
val errorMessage = stringResource(R.string.screen_start_chat_error_starting_chat)
|
||||||
is Async.Loading -> {
|
AsyncView(
|
||||||
ProgressDialog(text = stringResource(id = CommonStrings.common_starting_chat))
|
async = state.startDmAction,
|
||||||
}
|
progressText = stringResource(CommonStrings.common_starting_chat),
|
||||||
|
onSuccess = { onOpenDM(it) },
|
||||||
is Async.Failure -> {
|
errorTransform = { errorMessage },
|
||||||
RetryDialog(
|
onRetry = {
|
||||||
content = stringResource(id = R.string.screen_start_chat_error_starting_chat),
|
state.userListState.selectedUsers.firstOrNull()
|
||||||
onDismiss = { state.eventSink(CreateRoomRootEvents.CancelStartDM) },
|
?.let { state.eventSink(CreateRoomRootEvents.StartDM(it)) }
|
||||||
onRetry = {
|
// Cancel start DM if there is no more selected user (should not happen)
|
||||||
state.userListState.selectedUsers.firstOrNull()
|
?: state.eventSink(CreateRoomRootEvents.CancelStartDM)
|
||||||
?.let { state.eventSink(CreateRoomRootEvents.StartDM(it)) }
|
},
|
||||||
// Cancel start DM if there is no more selected user (should not happen)
|
onErrorDismiss = { state.eventSink(CreateRoomRootEvents.CancelStartDM) },
|
||||||
?: state.eventSink(CreateRoomRootEvents.CancelStartDM)
|
)
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> Unit
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
|
|||||||
Reference in New Issue
Block a user