commit 2c32ba6197a4e0d066180df32a64cbb69b262aec
parent 8c9db6054c84782286b8d6b2ab0a202b4f14947c
Author: Iván Ávalos <avalos@disroot.org>
Date: Fri, 5 Dec 2025 15:33:39 +0100
[wallet] improvements to error screen
Diffstat:
2 files changed, 43 insertions(+), 32 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/compose/ErrorComposable.kt b/wallet/src/main/java/net/taler/wallet/compose/ErrorComposable.kt
@@ -25,9 +25,11 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
-import androidx.compose.material.icons.filled.ErrorOutline
+import androidx.compose.material.icons.rounded.ErrorOutline
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Card
+import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@@ -61,10 +63,10 @@ fun ErrorComposable(
verticalArrangement = Arrangement.Center,
) {
Icon(
- Icons.Default.ErrorOutline,
+ Icons.Rounded.ErrorOutline,
modifier = Modifier
- .size(120.dp)
- .padding(bottom = 8.dp),
+ .size(85.dp)
+ .padding(bottom = 5.dp),
contentDescription = null,
tint = MaterialTheme.colorScheme.error,
)
@@ -83,38 +85,46 @@ fun ErrorComposable(
json.encodeToString(error)
}
- Text(
- modifier = Modifier.padding(bottom = 16.dp),
- style = MaterialTheme.typography.bodyLarge,
- text = if (!devMode) {
- error.userFacingMsg
- } else jsonError,
- fontFamily = if (devMode) {
- FontFamily.Monospace
- } else {
- FontFamily.Default
- },
- textAlign = if (devMode) {
- TextAlign.Start
- } else {
- TextAlign.Center
+ if (devMode) {
+ Card(Modifier
+ .fillMaxWidth()) {
+ Text(
+ modifier = Modifier.padding(16.dp),
+ text = jsonError,
+ style = MaterialTheme.typography.bodyMedium,
+ color = CardDefaults.cardColors().contentColor,
+ fontFamily = FontFamily.Monospace,
+ textAlign = TextAlign.Start,
+ )
}
- )
+ } else {
+ Text(
+ text = error.userFacingMsg,
+ fontFamily = FontFamily.Default,
+ textAlign = TextAlign.Center,
+ )
+ }
- Row(
- modifier = Modifier
- .padding(bottom = 16.dp)
- .fillMaxWidth(),
- horizontalArrangement = Arrangement.SpaceEvenly,
+ Column(Modifier
+ .padding(bottom = 16.dp, top = 22.dp)
+ .fillMaxWidth(),
+ horizontalAlignment = CenterHorizontally,
) {
- CopyToClipboardButton(
- label = "Error",
- content = jsonError,
- )
+ Text(stringResource(R.string.error_export),
+ modifier = Modifier.padding(bottom = 12.dp),
+ style = MaterialTheme.typography.titleMedium)
+ Row(Modifier.fillMaxWidth(),
+ horizontalArrangement = Arrangement.SpaceEvenly,
+ ) {
+ CopyToClipboardButton(
+ label = "Error",
+ content = jsonError,
+ )
- ShareButton(
- content = jsonError,
- )
+ ShareButton(
+ content = jsonError,
+ )
+ }
}
if (onClose != null) Button(
diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml
@@ -64,6 +64,7 @@ GNU Taler is immune to many types of fraud such as credit card data theft, phish
<string name="enter_uri">Enter taler:// URI</string>
<string name="enter_uri_label">Enter URI</string>
<string name="error">Error</string>
+ <string name="error_export">Export error diagnostics</string>
<string name="import_db">Import</string>
<string name="loading">Loading</string>
<string name="menu">Menu</string>