redo error info component organization

This commit is contained in:
qimiko committed 2024-02-20 20:41:53 -07:00
1 parent 9353c14dcf
commit 6c62229c03
1 file changed
+42 -25
@@ -514,24 +514,9 @@ fun onShowLogs(context: Context) {
context.startActivity(launchIntent) context.startActivity(launchIntent)
} }
@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class)
@Composable @Composable
fun ErrorInfoSheet(failureInfo: LoadFailureInfo, onDismiss: () -> Unit) { fun ErrorInfoDescription(description: String, modifier: Modifier = Modifier) {
val sheetState = rememberModalBottomSheetState() Column(modifier = modifier) {
ModalBottomSheet(onDismissRequest = { onDismiss() }, sheetState = sheetState) {
Column(modifier = Modifier
.padding(horizontal = 24.dp)
.verticalScroll(rememberScrollState())
) {
ErrorInfoTitle(failureInfo.title)
Spacer(Modifier.size(16.dp))
ErrorInfoBody(failureInfo.title)
if (failureInfo.description != null) {
Column(modifier = Modifier.padding(vertical = 8.dp)) {
Text( Text(
stringResource(R.string.launcher_error_details), stringResource(R.string.launcher_error_details),
style = Typography.headlineSmall style = Typography.headlineSmall
@@ -540,7 +525,7 @@ fun ErrorInfoSheet(failureInfo: LoadFailureInfo, onDismiss: () -> Unit) {
Spacer(Modifier.size(8.dp)) Spacer(Modifier.size(8.dp))
Text( Text(
failureInfo.description, description,
fontFamily = FontFamily.Monospace, fontFamily = FontFamily.Monospace,
style = Typography.bodyMedium style = Typography.bodyMedium
) )
@@ -552,20 +537,21 @@ fun ErrorInfoSheet(failureInfo: LoadFailureInfo, onDismiss: () -> Unit) {
style = Typography.labelMedium style = Typography.labelMedium
) )
} }
} }
@Composable
@OptIn(ExperimentalLayoutApi::class)
fun ErrorInfoActions(extraDetails: String?, modifier: Modifier = Modifier) {
val clipboardManager = LocalClipboardManager.current val clipboardManager = LocalClipboardManager.current
val context = LocalContext.current val context = LocalContext.current
FlowRow( FlowRow(
modifier = Modifier modifier = modifier,
.fillMaxWidth()
.padding(vertical = 8.dp),
horizontalArrangement = Arrangement.spacedBy( horizontalArrangement = Arrangement.spacedBy(
12.dp, alignment = Alignment.CenterHorizontally 12.dp, alignment = Alignment.CenterHorizontally
) )
) { ) {
if (failureInfo.description != null) { if (extraDetails != null) {
Button(onClick = { onShowLogs(context) }) { Button(onClick = { onShowLogs(context) }) {
Icon( Icon(
painterResource(R.drawable.icon_description), painterResource(R.drawable.icon_description),
@@ -576,7 +562,7 @@ fun ErrorInfoSheet(failureInfo: LoadFailureInfo, onDismiss: () -> Unit) {
} }
FilledTonalButton(onClick = { FilledTonalButton(onClick = {
val message = failureInfo.extendedMessage ?: failureInfo.description val message = extraDetails
clipboardManager.setText(AnnotatedString(message)) clipboardManager.setText(AnnotatedString(message))
}) { }) {
Icon( Icon(
@@ -606,8 +592,39 @@ fun ErrorInfoSheet(failureInfo: LoadFailureInfo, onDismiss: () -> Unit) {
} }
} }
} }
}
Spacer(Modifier.size(8.dp)) @OptIn(ExperimentalMaterial3Api::class)
@Composable
fun ErrorInfoSheet(failureInfo: LoadFailureInfo, onDismiss: () -> Unit) {
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
ModalBottomSheet(onDismissRequest = { onDismiss() }, sheetState = sheetState) {
// second container created for scroll (before padding is added)
Box(Modifier.verticalScroll(rememberScrollState())) {
Column(modifier = Modifier
.padding(horizontal = 24.dp)
) {
ErrorInfoTitle(failureInfo.title)
Spacer(Modifier.size(16.dp))
ErrorInfoBody(failureInfo.title)
if (failureInfo.description != null) {
ErrorInfoDescription(
failureInfo.description,
modifier = Modifier.padding(vertical = 8.dp)
)
}
ErrorInfoActions(
extraDetails = failureInfo.extendedMessage ?: failureInfo.description,
modifier = Modifier
.fillMaxWidth()
.padding(top = 8.dp, bottom = 16.dp)
)
}
} }
} }
} }