Displaying stacks in error messages if they are present

This commit is contained in:
Vitor Pamplona 2024-08-16 11:14:34 -04:00
parent 5cb6f97178
commit 4343c744db
3 changed files with 46 additions and 2 deletions

View File

@ -33,11 +33,41 @@ import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.Size16dp
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
import java.io.PrintWriter
import java.io.StringWriter
@Composable
fun InformationDialog(
title: String,
textContent: String?,
throwable: Throwable,
buttonColors: ButtonColors = ButtonDefaults.buttonColors(),
onDismiss: () -> Unit,
) {
val stack = stringRes(id = R.string.stack)
val str =
remember(throwable) {
val writer = StringWriter()
textContent?.let {
writer.append(it)
writer.append("\n\n")
}
writer.append(stack)
writer.append("\n")
throwable.printStackTrace(PrintWriter(writer))
writer.toString()
}
InformationDialog(title = title, textContent = str, buttonColors, onDismiss)
}
@Composable
fun InformationDialog(
@ -49,7 +79,11 @@ fun InformationDialog(
AlertDialog(
onDismissRequest = onDismiss,
title = { Text(title) },
text = { SelectionContainer { Text(textContent) } },
text = {
SelectionContainer {
Text(textContent)
}
},
confirmButton = {
Button(
onClick = onDismiss,

View File

@ -429,6 +429,15 @@ private fun DisplayErrorMessages(accountViewModel: AccountViewModel) {
) {
accountViewModel.clearToasts()
}
is ThrowableToastMsg ->
InformationDialog(
stringRes(obj.titleResId),
obj.msg,
obj.throwable,
) {
accountViewModel.clearToasts()
}
}
}
}

View File

@ -957,5 +957,6 @@
<string name="add_a_nip96_server">Add a NIP-96 Server</string>
<string name="delete_all">Delete all</string>
<string name="delete_all_drafts_confirmation">Are you sure you want to delete all drafts?</string>
<string name="and_more">" ... and %1$s more"</string>
<string name="and_more">" … and %1$s more"</string>
<string name="stack">Stack:</string>
</resources>