Untitled

 avatar
unknown
plain_text
7 days ago
3.8 kB
4
Indexable
@OptIn(ExperimentalMaterial3Api::class)
@Composable
internal fun BottomAlertDialog(
    title: String = stringResource(R.string.unexpected_error_happened),
    description: String = stringResource(R.string.please_try_again),
    onAction: (BirBonusCabinetUiAction) -> Unit
) {
    val bottomSheetState = rememberModalBottomSheetState(
        skipPartiallyExpanded = true,
        confirmValueChange = { false }
    )
    val coroutineScope = rememberCoroutineScope()

    ModalBottomSheet(
        modifier = Modifier
            .fillMaxHeight(),
        sheetState = bottomSheetState,
        containerColor = dsColorWhite,
        dragHandle = null,
        onDismissRequest = { onAction(BirBonusCabinetUiAction.OnErrorScreenButtonClicked) }
    ) {
        Column(
            modifier = Modifier
                .background(color = dsColorWhite)
                .fillMaxSize()
                .padding(
                    start = dsPaddingMedium,
                    end = dsPaddingMedium,
                    bottom = dsPaddingLargeX
                ),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ) {
            Spacer(modifier = Modifier.weight(1f))

            ErrorMessageComponent(
                modifier = Modifier,
                title = title,
                errorText = description
            )

            Spacer(modifier = Modifier.weight(1f))

            MainButton(
                onClick = {
                    coroutineScope.launch { bottomSheetState.hide() }
                    onAction(BirBonusCabinetUiAction.OnErrorScreenButtonClicked)
                }
            )
        }
    }
}

@Composable
fun ErrorAlertDialog(
    title: String = stringResource(R.string.unexpected_error_happened),
    description: String = stringResource(R.string.please_try_again),
    onAction: () -> Unit
) {
    Dialog(
        onDismissRequest = { },
        properties = DialogProperties(usePlatformDefaultWidth = false)
    ) {
        Column(
            modifier = Modifier
                .background(color = dsColorWhite)
                .fillMaxSize()
                .padding(
                    start = dsPaddingMedium,
                    end = dsPaddingMedium,
                    bottom = dsPaddingLargeX
                ),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ) {
            Spacer(modifier = Modifier.weight(1f))

            ErrorMessageComponent(
                modifier = Modifier,
                title = title,
                errorText = description
            )

            Spacer(modifier = Modifier.weight(1f))

            MainButton(
                onClick = { onAction() }
            )
        }
    }
}

@Composable
@Preview
private fun FullScreenBottomErrorDialogPreview() {
    ErrorAlertDialog(onAction = { })
}

@Composable
private fun ErrorMessageComponent(
    modifier: Modifier = Modifier,
    title: String = stringResource(R.string.unexpected_error_happened),
    errorText: String = stringResource(R.string.please_try_again)
) {
    Column(
        modifier = modifier
            .fillMaxWidth(),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Image(
            painter = painterResource(R.drawable.ic_exclamation),
            contentDescription = null
        )

        Spacer(modifier = Modifier.height(dsSpacer16))

        Text(
            text = title,
            fontSize = dsTextSizeGiant,
            style = MaterialTheme.typography.dsH1,
        )

        Spacer(modifier = Modifier.height(dsSpacer8))

        Text(
            text = errorText,
            fontSize = dsTextSizeMedium
        )
    }
}
Editor is loading...
Leave a Comment