From 47131abd50db9c3a5bc4be605ae99de19b30fd8a Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 5 May 2022 17:44:36 +0200 Subject: [PATCH] Fix file export when no file can open this type and export is chosen Before the `FileInputStream` got closed before started reading because of the async UseCase --- .../presenter/BrowseFilesPresenter.kt | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt b/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt index 7e7df22b..caf2400a 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/presenter/BrowseFilesPresenter.kt @@ -284,16 +284,18 @@ class BrowseFilesPresenter @Inject constructor( // private fun copyFile(downloadFiles: List) { downloadFiles.forEach { downloadFile -> try { - FileInputStream(fileUtil.fileFor(cloudFileModelMapper.toModel(downloadFile.downloadFile))).use { - copyDataUseCase // - .withSource(it) // - .andTarget(downloadFile.dataSink) // - .run(object : DefaultResultHandler() { - override fun onFinished() { - view?.showMessage(R.string.screen_file_browser_msg_file_exported) - } - }) - } + val source = FileInputStream(fileUtil.fileFor(cloudFileModelMapper.toModel(downloadFile.downloadFile))) + copyDataUseCase // + .withSource(source) // + .andTarget(downloadFile.dataSink) // + .run(object : DefaultResultHandler() { + override fun onSuccess(t: Void?) { + view?.showMessage(R.string.screen_file_browser_msg_file_exported) + } + override fun onFinished() { + source.close() + } + }) } catch (e: FileNotFoundException) { showError(e) }