From 5458490b29bb4b784f6afcf262f501ac2111dafa Mon Sep 17 00:00:00 2001 From: Gibran Chevalley Date: Thu, 3 Oct 2024 16:34:23 +0200 Subject: [PATCH] Move TransferFile creation logic based on Uri from view model to utils --- .../screen/newtransfer/NewTransferViewModel.kt | 12 +++--------- .../ui/screen/newtransfer/TransferFileUtils.kt | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt index d6db1d821..74a05b321 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/NewTransferViewModel.kt @@ -36,16 +36,10 @@ class NewTransferViewModel @Inject constructor(private val transferFileUtils: Tr viewModelScope.launch { val alreadyUsedFileNames = buildSet { transferFiles.value.forEach { add(it.fileName) } } - var failedFileCount = 0 - uris.forEach { uri -> - transferFileUtils.getTransferFile(uri, alreadyUsedFileNames)?.let { transferFile -> - transferFiles.value += transferFile - } ?: run { - failedFileCount++ - } - } + val newTransferFiles = transferFileUtils.getTransferFiles(uris, alreadyUsedFileNames) - failedTransferFileCount.emit(failedFileCount) + transferFiles.value += newTransferFiles + failedTransferFileCount.emit(uris.count() - newTransferFiles.count()) } } } diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/TransferFileUtils.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/TransferFileUtils.kt index 93f284ac3..5f5051dc0 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/TransferFileUtils.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/TransferFileUtils.kt @@ -29,7 +29,21 @@ import javax.inject.Singleton @Singleton class TransferFileUtils @Inject constructor(@ApplicationContext private val appContext: Context) { - fun getTransferFile(uri: Uri, alreadyUsedFileNames: Set): TransferFile? { + fun getTransferFiles(uris: List, alreadyUsedFileNames: Set): MutableSet { + val currentUsedFileNames = alreadyUsedFileNames.toMutableSet() + val transferFiles = mutableSetOf() + + uris.forEach { uri -> + getTransferFile(uri, currentUsedFileNames)?.let { transferFile -> + currentUsedFileNames += transferFile.fileName + transferFiles += transferFile + } + } + + return transferFiles + } + + private fun getTransferFile(uri: Uri, alreadyUsedFileNames: Set): TransferFile? { val contentResolver: ContentResolver = appContext.contentResolver val cursor: Cursor? = contentResolver.query(uri, null, null, null, null)