DownloadWorkerUtil: Properly collect flow to cancel downloads
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -21,6 +21,8 @@ import kotlinx.coroutines.GlobalScope
|
|||||||
import kotlinx.coroutines.cancel
|
import kotlinx.coroutines.cancel
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
|
import kotlinx.coroutines.flow.filter
|
||||||
|
import kotlinx.coroutines.flow.firstOrNull
|
||||||
import kotlinx.coroutines.flow.stateIn
|
import kotlinx.coroutines.flow.stateIn
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@@ -80,8 +82,8 @@ class DownloadWorkerUtil @Inject constructor(
|
|||||||
suspend fun cancelDownload(packageName: String) {
|
suspend fun cancelDownload(packageName: String) {
|
||||||
Log.i(TAG, "Cancelling download for $packageName")
|
Log.i(TAG, "Cancelling download for $packageName")
|
||||||
WorkManager.getInstance(context).cancelAllWorkByTag("$PACKAGE_NAME:$packageName")
|
WorkManager.getInstance(context).cancelAllWorkByTag("$PACKAGE_NAME:$packageName")
|
||||||
downloadsList.value
|
downloadsList.filter { it.isNotEmpty() }.firstOrNull()
|
||||||
.find { it.packageName == packageName && it.status == DownloadStatus.QUEUED }
|
?.find { it.packageName == packageName && it.status == DownloadStatus.QUEUED }
|
||||||
?.let { downloadDao.update(it.copy(status = DownloadStatus.CANCELLED)) }
|
?.let { downloadDao.update(it.copy(status = DownloadStatus.CANCELLED)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user