diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MultiOrchestrator.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MultiOrchestrator.kt index f5c738ac7..18467a353 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MultiOrchestrator.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MultiOrchestrator.kt @@ -60,6 +60,7 @@ class MultiOrchestrator( context: Context, useH265: Boolean = false, stripMetadata: Boolean = true, + onStrippingFailed: suspend () -> Boolean = { true }, ): Result { coroutineScope { val jobs = @@ -76,6 +77,7 @@ class MultiOrchestrator( context, useH265, stripMetadata, + onStrippingFailed, ) } } @@ -96,6 +98,7 @@ class MultiOrchestrator( context: Context, useH265: Boolean = false, stripMetadata: Boolean = true, + onStrippingFailed: suspend () -> Boolean = { true }, ): Result { coroutineScope { val jobs = @@ -113,6 +116,7 @@ class MultiOrchestrator( context, useH265, stripMetadata, + onStrippingFailed, ) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/UploadOrchestrator.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/UploadOrchestrator.kt index ee9fa4ad0..6ee9ce22e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/UploadOrchestrator.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/UploadOrchestrator.kt @@ -320,8 +320,16 @@ class UploadOrchestrator { context: Context, useH265: Boolean = false, stripMetadata: Boolean = true, + onStrippingFailed: suspend () -> Boolean = { true }, ): UploadingFinalState { val strippingResult = stripMetadataIfNeeded(uri, mimeType, stripMetadata, compressionQuality, context) + + if (stripMetadata && !strippingResult.stripped) { + if (!onStrippingFailed()) { + return error(R.string.upload_cancelled) + } + } + val compressed = compressIfNeeded(strippingResult.uri, mimeType, compressionQuality, context, useH265) return when (server.type) { @@ -343,8 +351,16 @@ class UploadOrchestrator { context: Context, useH265: Boolean = false, stripMetadata: Boolean = true, + onStrippingFailed: suspend () -> Boolean = { true }, ): UploadingFinalState { val strippingResult = stripMetadataIfNeeded(uri, mimeType, stripMetadata, compressionQuality, context) + + if (stripMetadata && !strippingResult.stripped) { + if (!onStrippingFailed()) { + return error(R.string.upload_cancelled) + } + } + val compressed = compressIfNeeded(strippingResult.uri, mimeType, compressionQuality, context, useH265) val encrypted = EncryptFiles().encryptFile(context, compressed.uri, encrypt)