From 3c25626a75cb2411b5d18cf08ab76b7d3a92350d Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sat, 17 Feb 2024 15:04:37 +0530 Subject: [PATCH] DownloadWorker: Only update appropriate status field on status change Signed-off-by: Aayush Gupta --- .../java/com/aurora/store/data/room/download/DownloadDao.kt | 4 ++++ .../main/java/com/aurora/store/data/work/DownloadWorker.kt | 6 +----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/room/download/DownloadDao.kt b/app/src/main/java/com/aurora/store/data/room/download/DownloadDao.kt index 9b721a7b3..8e47f1520 100644 --- a/app/src/main/java/com/aurora/store/data/room/download/DownloadDao.kt +++ b/app/src/main/java/com/aurora/store/data/room/download/DownloadDao.kt @@ -5,6 +5,7 @@ import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update +import com.aurora.store.data.model.DownloadStatus import kotlinx.coroutines.flow.Flow @Dao @@ -16,6 +17,9 @@ interface DownloadDao { @Update suspend fun update(download: Download) + @Query("UPDATE download SET downloadStatus=:downloadStatus WHERE packageName=:packageName") + suspend fun updateStatus(packageName: String, downloadStatus: DownloadStatus) + @Query("SELECT * FROM download") fun downloads(): Flow> diff --git a/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt b/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt index 4e9a5e845..61a65d184 100644 --- a/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt +++ b/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt @@ -307,11 +307,7 @@ class DownloadWorker @AssistedInject constructor( private suspend fun notifyStatus(status: DownloadStatus, dID: Int = -1) { // Update database for all status except downloading which is handled onProgress if (status != DownloadStatus.DOWNLOADING) { - download.apply { - this.downloadStatus = status - if (download.downloadStatus == DownloadStatus.COMPLETED) this.progress = 100 - } - downloadDao.update(download) + downloadDao.updateStatus(download.packageName, status) } if (status == DownloadStatus.CANCELLED) return