Skip to content

Commit

Permalink
Move TransferFile creation logic based on Uri from view model to utils
Browse files Browse the repository at this point in the history
  • Loading branch information
LunarX committed Oct 7, 2024
1 parent 403d832 commit 5458490
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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())
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,21 @@ import javax.inject.Singleton

@Singleton
class TransferFileUtils @Inject constructor(@ApplicationContext private val appContext: Context) {
fun getTransferFile(uri: Uri, alreadyUsedFileNames: Set<String>): TransferFile? {
fun getTransferFiles(uris: List<Uri>, alreadyUsedFileNames: Set<String>): MutableSet<TransferFile> {
val currentUsedFileNames = alreadyUsedFileNames.toMutableSet()
val transferFiles = mutableSetOf<TransferFile>()

uris.forEach { uri ->
getTransferFile(uri, currentUsedFileNames)?.let { transferFile ->
currentUsedFileNames += transferFile.fileName
transferFiles += transferFile
}
}

return transferFiles
}

private fun getTransferFile(uri: Uri, alreadyUsedFileNames: Set<String>): TransferFile? {
val contentResolver: ContentResolver = appContext.contentResolver
val cursor: Cursor? = contentResolver.query(uri, null, null, null, null)

Expand Down

0 comments on commit 5458490

Please sign in to comment.