0
0
mirror of https://github.com/thunderbird/thunderbird-android.git synced 2024-09-20 04:02:14 +02:00

Change ErrorView to make onRetry optional and update style

This commit is contained in:
Wolf-Martell Montwé 2023-10-17 17:32:59 +02:00
parent ab7d680111
commit dc110a7af9
No known key found for this signature in database
GPG Key ID: 6D45B21512ACBF72
2 changed files with 85 additions and 35 deletions

View File

@ -26,10 +26,34 @@ fun LazyGridScope.stateItems() {
ItemOutlined {
ErrorView(
title = "Error",
)
}
}
item {
ItemOutlined {
ErrorView(
title = "Error with message",
message = "Something went wrong",
)
}
}
item {
ItemOutlined {
ErrorView(
title = "Error with retry",
onRetry = {},
)
}
}
item {
ItemOutlined {
ErrorView(
title = "Error with retry and message",
message = "Something went wrong",
onRetry = {},
)
}
}
sectionHeaderItem(text = "LoadingView")
sectionSubtitleItem(text = "Default")

View File

@ -4,7 +4,9 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Icon
import androidx.compose.runtime.Composable
@ -26,7 +28,7 @@ fun ErrorView(
title: String,
modifier: Modifier = Modifier,
message: String? = null,
onRetry: () -> Unit = { },
onRetry: (() -> Unit)? = null,
contentAlignment: Alignment = Alignment.Center,
) {
Box(
@ -38,45 +40,46 @@ fun ErrorView(
Column(
modifier = Modifier
.fillMaxWidth()
.padding(
vertical = MainTheme.spacings.default,
horizontal = MainTheme.spacings.double,
),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default),
.padding(MainTheme.spacings.double),
) {
Icon(
imageVector = Icons.Filled.error,
contentDescription = null,
tint = MainTheme.colors.error,
modifier = Modifier.padding(top = MainTheme.spacings.default),
)
TextSubtitle1(
text = title,
modifier = Modifier.padding(bottom = MainTheme.spacings.default),
)
if (message != null) {
TextBody2(
text = message,
modifier = Modifier
.fillMaxWidth(),
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default),
) {
Icon(
imageVector = Icons.Filled.error,
contentDescription = null,
tint = MainTheme.colors.error,
)
TextSubtitle1(
text = title,
)
}
Row(
modifier = Modifier
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.End,
) {
ButtonText(
text = stringResource(id = R.string.designsystem_molecule_error_view_button_retry),
onClick = onRetry,
contentPadding = buttonContentPadding(
start = MainTheme.spacings.double,
end = MainTheme.spacings.double,
),
if (message != null) {
Spacer(modifier = Modifier.height(MainTheme.spacings.double))
TextBody2(
text = message,
modifier = Modifier.fillMaxWidth(),
)
}
if (onRetry != null) {
Spacer(modifier = Modifier.height(MainTheme.spacings.default))
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.End,
) {
ButtonText(
text = stringResource(id = R.string.designsystem_molecule_error_view_button_retry),
onClick = onRetry,
contentPadding = buttonContentPadding(
start = MainTheme.spacings.double,
end = MainTheme.spacings.double,
),
)
}
}
}
}
}
@ -101,3 +104,26 @@ internal fun ErrorViewWithMessagePreview() {
)
}
}
@Preview(showBackground = true)
@Composable
internal fun ErrorViewWithRetryPreview() {
PreviewWithThemes {
ErrorView(
title = "Error",
onRetry = {},
)
}
}
@Preview(showBackground = true)
@Composable
internal fun ErrorViewWithRetryAndMessagePreview() {
PreviewWithThemes {
ErrorView(
title = "Error",
message = "Something went wrong.",
onRetry = {},
)
}
}