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:
parent
ab7d680111
commit
dc110a7af9
@ -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")
|
||||
|
@ -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 = {},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user