From 2705eba17797d4c1f4b29639e346abb525e25ca0 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 8 Sep 2025 12:16:32 +0100 Subject: [PATCH 1/2] Catch exception when failing to save original export image, it could happen that we lose access to this image. java.io.FileNotFoundException: File not found for uri: --- .../androidify/customize/CustomizeExportViewModel.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt b/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt index 4753afae..09334890 100644 --- a/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt +++ b/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt @@ -300,10 +300,14 @@ class CustomizeExportViewModel @Inject constructor( } val originalImage = state.value.originalImageUrl if (originalImage != null) { - val savedOriginalUri = - imageGenerationRepository.saveImageToExternalStorage(originalImage) - _state.update { - it.copy(externalOriginalSavedUri = savedOriginalUri) + try { + val savedOriginalUri = + imageGenerationRepository.saveImageToExternalStorage(originalImage) + _state.update { + it.copy(externalOriginalSavedUri = savedOriginalUri) + } + } catch (exception : Exception) { + Log.e("CustomizeExportViewModel", "Original image save failed: ", exception) } } if (resultBitmap != null) { From 14279b1d462fe39d81c73593486d5a5a8f61b8ed Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 8 Sep 2025 12:16:32 +0100 Subject: [PATCH 2/2] Catch exception when failing to save original export image, it could happen that we lose access to this image. java.io.FileNotFoundException: File not found for uri: --- .../customize/CustomizeExportViewModel.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt b/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt index 4753afae..9215e7d9 100644 --- a/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt +++ b/feature/results/src/main/java/com/android/developers/androidify/customize/CustomizeExportViewModel.kt @@ -44,6 +44,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import javax.inject.Inject +import kotlin.collections.isNotEmpty @HiltViewModel class CustomizeExportViewModel @Inject constructor( @@ -281,7 +282,7 @@ class CustomizeExportViewModel @Inject constructor( ) } } catch (e: Exception) { - Log.e("CustomizeExportViewModel", "Image generation failed", e) + Log.d("CustomizeExportViewModel", "Image generation failed", e) snackbarHostState.value.showSnackbar("Background vibe generation failed") } finally { _state.update { it.copy(showImageEditProgress = false) } @@ -300,10 +301,14 @@ class CustomizeExportViewModel @Inject constructor( } val originalImage = state.value.originalImageUrl if (originalImage != null) { - val savedOriginalUri = - imageGenerationRepository.saveImageToExternalStorage(originalImage) - _state.update { - it.copy(externalOriginalSavedUri = savedOriginalUri) + try { + val savedOriginalUri = + imageGenerationRepository.saveImageToExternalStorage(originalImage) + _state.update { + it.copy(externalOriginalSavedUri = savedOriginalUri) + } + } catch (exception : Exception) { + Log.e("CustomizeExportViewModel", "Original image save failed: ", exception) } } if (resultBitmap != null) {