From d9623f16b72c47ca504137bff5ffae243f47fa9f Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 18 Sep 2025 12:25:08 +0530 Subject: [PATCH] DownloadHelper: Fetch all downloads when doing operations Depending upon flow isn't reliable as subscription change due to lifecycle Signed-off-by: Aayush Gupta --- .../com/aurora/store/data/helper/DownloadHelper.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/helper/DownloadHelper.kt b/app/src/main/java/com/aurora/store/data/helper/DownloadHelper.kt index e52e6ddf2..fa3808b8c 100644 --- a/app/src/main/java/com/aurora/store/data/helper/DownloadHelper.kt +++ b/app/src/main/java/com/aurora/store/data/helper/DownloadHelper.kt @@ -110,9 +110,7 @@ class DownloadHelper @Inject constructor( suspend fun cancelDownload(packageName: String) { Log.i(TAG, "Cancelling download for $packageName") WorkManager.getInstance(context).cancelAllWorkByTag("$PACKAGE_NAME:$packageName") - downloadsList.filter { it.isNotEmpty() }.firstOrNull() - ?.find { it.packageName == packageName } - ?.let { downloadDao.updateStatus(packageName, DownloadStatus.CANCELLED) } + downloadDao.updateStatus(packageName, DownloadStatus.CANCELLED) } /** @@ -141,7 +139,7 @@ class DownloadHelper @Inject constructor( * Clears finished downloads and their downloaded files */ suspend fun clearFinishedDownloads() { - downloadsList.value.filter { it.isFinished }.forEach { + downloadDao.downloads().firstOrNull()?.filter { it.isFinished }?.forEach { clearDownload(it.packageName, it.versionCode) } } @@ -152,8 +150,10 @@ class DownloadHelper @Inject constructor( */ suspend fun cancelAll(updatesOnly: Boolean = false) { // Cancel all enqueued downloads first to avoid triggering re-download - downloadsList.value.filter { it.downloadStatus == DownloadStatus.QUEUED } - .filter { if (updatesOnly) it.isInstalled else true }.forEach { + downloadDao.downloads().firstOrNull() + ?.filter { it.downloadStatus == DownloadStatus.QUEUED } + ?.filter { if (updatesOnly) it.isInstalled else true } + ?.forEach { downloadDao.updateStatus(it.packageName, DownloadStatus.CANCELLED) }