From 96c10df25571d02ead1f6f9845c2e61882d0272f Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 27 Dec 2023 21:00:12 +0530 Subject: [PATCH] DownloadWorkerUtil: Properly collect flow to cancel downloads Signed-off-by: Aayush Gupta --- .../main/java/com/aurora/store/util/DownloadWorkerUtil.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/aurora/store/util/DownloadWorkerUtil.kt b/app/src/main/java/com/aurora/store/util/DownloadWorkerUtil.kt index febfb913d..38187fbdf 100644 --- a/app/src/main/java/com/aurora/store/util/DownloadWorkerUtil.kt +++ b/app/src/main/java/com/aurora/store/util/DownloadWorkerUtil.kt @@ -21,6 +21,8 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.cancel import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch @@ -80,8 +82,8 @@ class DownloadWorkerUtil @Inject constructor( suspend fun cancelDownload(packageName: String) { Log.i(TAG, "Cancelling download for $packageName") WorkManager.getInstance(context).cancelAllWorkByTag("$PACKAGE_NAME:$packageName") - downloadsList.value - .find { it.packageName == packageName && it.status == DownloadStatus.QUEUED } + downloadsList.filter { it.isNotEmpty() }.firstOrNull() + ?.find { it.packageName == packageName && it.status == DownloadStatus.QUEUED } ?.let { downloadDao.update(it.copy(status = DownloadStatus.CANCELLED)) } }