Use RetryDialog
This commit is contained in:
parent
eef1eea2a8
commit
0dffd78872
3 changed files with 101 additions and 15 deletions
|
|
@ -44,7 +44,7 @@ import io.element.android.features.createroom.impl.R
|
||||||
import io.element.android.features.userlist.api.UserListView
|
import io.element.android.features.userlist.api.UserListView
|
||||||
import io.element.android.libraries.architecture.Async
|
import io.element.android.libraries.architecture.Async
|
||||||
import io.element.android.libraries.designsystem.components.ProgressDialog
|
import io.element.android.libraries.designsystem.components.ProgressDialog
|
||||||
import io.element.android.libraries.designsystem.components.dialogs.ErrorDialog
|
import io.element.android.libraries.designsystem.components.dialogs.RetryDialog
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
|
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
|
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
|
||||||
import io.element.android.libraries.designsystem.theme.components.CenterAlignedTopAppBar
|
import io.element.android.libraries.designsystem.theme.components.CenterAlignedTopAppBar
|
||||||
|
|
@ -109,12 +109,10 @@ fun CreateRoomRootView(
|
||||||
ProgressDialog(text = stringResource(id = StringR.string.common_creating_room))
|
ProgressDialog(text = stringResource(id = StringR.string.common_creating_room))
|
||||||
}
|
}
|
||||||
is Async.Failure -> {
|
is Async.Failure -> {
|
||||||
ErrorDialog(
|
RetryDialog(
|
||||||
content = stringResource(id = StringR.string.screen_start_chat_error_starting_chat),
|
content = stringResource(id = StringR.string.screen_start_chat_error_starting_chat),
|
||||||
dismissText = stringResource(id = StringR.string.action_cancel),
|
|
||||||
submitText = stringResource(id = StringR.string.action_retry),
|
|
||||||
onDismiss = { state.eventSink(CreateRoomRootEvents.CancelStartDM) },
|
onDismiss = { state.eventSink(CreateRoomRootEvents.CancelStartDM) },
|
||||||
onSubmit = { state.eventSink(CreateRoomRootEvents.RetryStartDM) },
|
onRetry = { state.eventSink(CreateRoomRootEvents.RetryStartDM) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else -> Unit
|
else -> Unit
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,7 @@ fun ErrorDialog(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
title: String = ErrorDialogDefaults.title,
|
title: String = ErrorDialogDefaults.title,
|
||||||
submitText: String = ErrorDialogDefaults.submitText,
|
submitText: String = ErrorDialogDefaults.submitText,
|
||||||
dismissText: String? = null,
|
|
||||||
onDismiss: () -> Unit = {},
|
onDismiss: () -> Unit = {},
|
||||||
onSubmit: () -> Unit = onDismiss,
|
|
||||||
shape: Shape = AlertDialogDefaults.shape,
|
shape: Shape = AlertDialogDefaults.shape,
|
||||||
containerColor: Color = AlertDialogDefaults.containerColor,
|
containerColor: Color = AlertDialogDefaults.containerColor,
|
||||||
iconContentColor: Color = AlertDialogDefaults.iconContentColor,
|
iconContentColor: Color = AlertDialogDefaults.iconContentColor,
|
||||||
|
|
@ -57,17 +55,10 @@ fun ErrorDialog(
|
||||||
Text(content)
|
Text(content)
|
||||||
},
|
},
|
||||||
confirmButton = {
|
confirmButton = {
|
||||||
TextButton(onClick = onSubmit) {
|
TextButton(onClick = onDismiss) {
|
||||||
Text(submitText)
|
Text(submitText)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dismissButton = dismissText?.let {
|
|
||||||
{
|
|
||||||
TextButton(onClick = onDismiss) {
|
|
||||||
Text(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
shape = shape,
|
shape = shape,
|
||||||
containerColor = containerColor,
|
containerColor = containerColor,
|
||||||
iconContentColor = iconContentColor,
|
iconContentColor = iconContentColor,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2023 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.designsystem.components.dialogs
|
||||||
|
|
||||||
|
import androidx.compose.material3.AlertDialog
|
||||||
|
import androidx.compose.material3.AlertDialogDefaults
|
||||||
|
import androidx.compose.material3.TextButton
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.graphics.Shape
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import androidx.compose.ui.unit.Dp
|
||||||
|
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
|
||||||
|
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
|
||||||
|
import io.element.android.libraries.designsystem.theme.components.Text
|
||||||
|
import io.element.android.libraries.ui.strings.R as StringR
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun RetryDialog(
|
||||||
|
content: String,
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
title: String = RetryDialogDefaults.title,
|
||||||
|
retryText: String = RetryDialogDefaults.retryText,
|
||||||
|
dismissText: String = RetryDialogDefaults.dismissText,
|
||||||
|
onRetry: () -> Unit = {},
|
||||||
|
onDismiss: () -> Unit = {},
|
||||||
|
shape: Shape = AlertDialogDefaults.shape,
|
||||||
|
containerColor: Color = AlertDialogDefaults.containerColor,
|
||||||
|
iconContentColor: Color = AlertDialogDefaults.iconContentColor,
|
||||||
|
titleContentColor: Color = AlertDialogDefaults.titleContentColor,
|
||||||
|
textContentColor: Color = AlertDialogDefaults.textContentColor,
|
||||||
|
tonalElevation: Dp = AlertDialogDefaults.TonalElevation,
|
||||||
|
) {
|
||||||
|
AlertDialog(
|
||||||
|
modifier = modifier,
|
||||||
|
onDismissRequest = onDismiss,
|
||||||
|
title = {
|
||||||
|
Text(title)
|
||||||
|
},
|
||||||
|
text = {
|
||||||
|
Text(content)
|
||||||
|
},
|
||||||
|
confirmButton = {
|
||||||
|
TextButton(onClick = onRetry) {
|
||||||
|
Text(retryText)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dismissButton = {
|
||||||
|
TextButton(onClick = onDismiss) {
|
||||||
|
Text(dismissText)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
shape = shape,
|
||||||
|
containerColor = containerColor,
|
||||||
|
iconContentColor = iconContentColor,
|
||||||
|
titleContentColor = titleContentColor,
|
||||||
|
textContentColor = textContentColor,
|
||||||
|
tonalElevation = tonalElevation,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
object RetryDialogDefaults {
|
||||||
|
val title: String @Composable get() = stringResource(id = StringR.string.dialog_title_error)
|
||||||
|
val retryText: String @Composable get() = stringResource(id = StringR.string.action_retry)
|
||||||
|
val dismissText: String @Composable get() = stringResource(id = StringR.string.action_cancel)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
internal fun RetryDialogLightPreview() = ElementPreviewLight { ContentToPreview() }
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
internal fun RetryDialogDarkPreview() = ElementPreviewDark { ContentToPreview() }
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun ContentToPreview() {
|
||||||
|
RetryDialog(
|
||||||
|
content = "Content",
|
||||||
|
)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue