From 11ac8092e2e80cba2c532e98bfefe9ff75f08b85 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 21 Feb 2024 17:54:06 +0530 Subject: [PATCH] DownloadWorker: Update file and sharedLib list atomically Signed-off-by: Aayush Gupta --- .../com/aurora/store/data/room/download/DownloadDao.kt | 7 +++++++ .../main/java/com/aurora/store/data/work/DownloadWorker.kt | 5 +++-- 2 files changed, 10 insertions(+), 2 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 9a7c71b1c..1412d6ac1 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.gplayapi.data.models.File import com.aurora.store.data.model.DownloadStatus import kotlinx.coroutines.flow.Flow @@ -20,6 +21,12 @@ interface DownloadDao { @Query("UPDATE download SET downloadStatus=:downloadStatus WHERE packageName=:packageName") suspend fun updateStatus(packageName: String, downloadStatus: DownloadStatus) + @Query("UPDATE download SET fileList=:fileList WHERE packageName=:packageName") + suspend fun updateFiles(packageName: String, fileList: List) + + @Query("UPDATE download SET sharedLibs=:sharedLibs WHERE packageName=:packageName") + suspend fun updateSharedLibs(packageName: String, sharedLibs: List) + @Query( """ UPDATE download 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 fe80483a3..4ca6b1b2c 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 @@ -131,8 +131,9 @@ class DownloadWorker @AssistedInject constructor( download.totalFiles = requestList.size totalBytes = requestList.sumOf { it.size } - // Update database with all latest changes - downloadDao.update(download) + // Update database with all latest purchases + downloadDao.updateFiles(download.packageName, download.fileList) + downloadDao.updateSharedLibs(download.packageName, download.sharedLibs) // Download and verify all files exists requestList.forEach { request ->