From 196b1b3c3e03ead7e24be488f4ce97a373988aa8 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Nicolas <6371790+pynicolas@users.noreply.github.com> Date: Tue, 8 Jul 2025 10:00:49 +0200 Subject: [PATCH] PDfGeneration: display error message --- .../myscan/view/PdfGenerationBottomSheet.kt | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/mydomain/myscan/view/PdfGenerationBottomSheet.kt b/app/src/main/java/org/mydomain/myscan/view/PdfGenerationBottomSheet.kt index 0d9ab37..85c9f27 100644 --- a/app/src/main/java/org/mydomain/myscan/view/PdfGenerationBottomSheet.kt +++ b/app/src/main/java/org/mydomain/myscan/view/PdfGenerationBottomSheet.kt @@ -97,7 +97,6 @@ fun PdfGenerationBottomSheetWrapper( } } -// TODO Handle error in PDF generation @Composable fun PdfGenerationBottomSheet( filename: String, @@ -159,7 +158,9 @@ fun PdfGenerationBottomSheet( if (uiState.savedFileUri != null) { SavePdfBar(onOpen) } - + if (uiState.errorMessage != null) { + ErrorBar(uiState.errorMessage) + } } } @@ -215,6 +216,19 @@ private fun SavePdfBar(onOpen: () -> Unit) { } } +@Composable +private fun ErrorBar(errorMessage: String) { + Text( + text = "Error: $errorMessage", + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.error, + modifier = Modifier + .fillMaxWidth() + .background(MaterialTheme.colorScheme.errorContainer) + .padding(16.dp), + ) +} + @Composable private fun CloseButton(onDismiss: () -> Unit) { Box(Modifier.fillMaxWidth()) { @@ -253,7 +267,6 @@ fun PreviewPdfGenerationDialogDuringGeneration() { fun PreviewPdfGenerationDialogAfterGeneration() { PreviewToCustomize( uiState = PdfGenerationUiState( - isGenerating = false, generatedPdf = GeneratedPdf("file://fake.pdf".toUri(), 442897L, 3) ) ) @@ -264,13 +277,22 @@ fun PreviewPdfGenerationDialogAfterGeneration() { fun PreviewPdfGenerationDialogAfterSave() { PreviewToCustomize( uiState = PdfGenerationUiState( - isGenerating = false, generatedPdf = GeneratedPdf("file://fake.pdf".toUri(), 442897L, 3), savedFileUri = "file:///fake".toUri() ) ) } +@Preview(showBackground = true) +@Composable +fun PreviewPdfGenerationDialogWithError() { + PreviewToCustomize( + uiState = PdfGenerationUiState( + errorMessage = "PDF generation failed" + ) + ) +} + @Composable fun PreviewToCustomize(uiState: PdfGenerationUiState) { MyScanTheme {