diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadButtonSetup.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadButtonSetup.kt index 0601f44c..bf2c1b49 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadButtonSetup.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadButtonSetup.kt @@ -32,7 +32,7 @@ object DownloadButtonSetup { DialogInterface.BUTTON_POSITIVE -> { VideoDownloadManager.deleteFilesAndUpdateSettings( ctx, - listOf(id), + setOf(id), MainScope() ) } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt index 9da99996..5537e8f2 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt @@ -230,7 +230,7 @@ class DownloadViewModel : ViewModel() { } } - private fun removeItems(idsToRemove: List) = viewModelScope.launchSafe { + private fun removeItems(idsToRemove: Set) = viewModelScope.launchSafe { val updatedHeaders = headerCards.value.orEmpty().filter { it.data.id !in idsToRemove } val updatedChildren = childCards.value.orEmpty().filter { it.data.id !in idsToRemove } _headerCards.postValue(updatedHeaders) @@ -274,10 +274,12 @@ class DownloadViewModel : ViewModel() { context: Context, selectedItemsList: List ): DeleteData { - val ids = mutableListOf() - val parentIds = mutableListOf() - val seriesNames = mutableListOf() val names = mutableListOf() + val seriesNames = mutableListOf() + + val ids = mutableSetOf() + val parentIds = mutableSetOf() + var parentName: String? = null selectedItemsList.forEach { item -> @@ -368,8 +370,8 @@ class DownloadViewModel : ViewModel() { private fun showDeleteConfirmationDialog( context: Context, message: String, - ids: List, - parentIds: List + ids: Set, + parentIds: Set ) { val builder = AlertDialog.Builder(context) val dialogClickListener = @@ -424,8 +426,8 @@ class DownloadViewModel : ViewModel() { } private data class DeleteData( - val ids: List, - val parentIds: List, + val ids: Set, + val parentIds: Set, val seriesNames: List, val names: List, val parentName: String? diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt index 509b9ed8..109c1ac0 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt @@ -1740,9 +1740,9 @@ object VideoDownloadManager { fun deleteFilesAndUpdateSettings( context: Context, - ids: List, + ids: Set, scope: CoroutineScope, - onComplete: (List) -> Unit = {} + onComplete: (Set) -> Unit = {} ) { scope.launchSafe(Dispatchers.IO) { val deleteJobs = ids.map { id -> @@ -1752,11 +1752,11 @@ object VideoDownloadManager { } val results = deleteJobs.awaitAll() - val successfulDeletes = results.filter { it.second }.map { it.first } - val failedDeletes = results.filterNot { it.second } + val (successfulResults, failedResults) = results.partition { it.second } + val successfulIds = successfulResults.map { it.first }.toSet() - if (failedDeletes.isNotEmpty()) { - failedDeletes.forEach { (id, _) -> + if (failedResults.isNotEmpty()) { + failedResults.forEach { (id, _) -> // TODO show a toast if some failed? Log.e("FileDeletion", "Failed to delete file with ID: $id") } @@ -1764,7 +1764,7 @@ object VideoDownloadManager { Log.i("FileDeletion", "All files deleted successfully") } - onComplete.invoke(successfulDeletes) + onComplete.invoke(successfulIds) } }