From 34833abb501e5dfabf233959603acac9acb5ba55 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 12 Jan 2025 09:26:54 +0700 Subject: [PATCH] DownloadWorker: Avoid passing download data as input Parsing the data otherwise pukes error on old Android versions due to size Signed-off-by: Aayush Gupta --- .../java/com/aurora/store/data/helper/DownloadHelper.kt | 9 +++------ .../java/com/aurora/store/data/work/DownloadWorker.kt | 8 +++----- 2 files changed, 6 insertions(+), 11 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 63ee5b49b..9bde44706 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 @@ -15,7 +15,6 @@ import com.aurora.store.data.room.download.DownloadDao import com.aurora.store.data.room.update.Update import com.aurora.store.data.work.DownloadWorker import com.aurora.store.util.PathUtil -import com.google.gson.Gson import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.collectLatest @@ -30,17 +29,15 @@ import javax.inject.Inject */ class DownloadHelper @Inject constructor( @ApplicationContext private val context: Context, - private val downloadDao: DownloadDao, - private val gson: Gson + private val downloadDao: DownloadDao ) { companion object { const val DOWNLOAD_WORKER = "DOWNLOAD_WORKER" - const val DOWNLOAD_DATA = "DOWNLOAD_DATA" + const val PACKAGE_NAME = "PACKAGE_NAME" private const val DOWNLOAD_APP = "DOWNLOAD_APP" private const val DOWNLOAD_UPDATE = "DOWNLOAD_UPDATE" - private const val PACKAGE_NAME = "PACKAGE_NAME" private const val VERSION_CODE = "VERSION_CODE" } @@ -166,7 +163,7 @@ class DownloadHelper @Inject constructor( private fun trigger(download: Download) { val inputData = Data.Builder() - .putString(DOWNLOAD_DATA, gson.toJson(download)) + .putString(PACKAGE_NAME, download.packageName) .build() val work = OneTimeWorkRequestBuilder() 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 301aacf43..937904344 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 @@ -34,7 +34,6 @@ import com.aurora.store.data.room.download.DownloadDao import com.aurora.store.util.CertUtil import com.aurora.store.util.NotificationUtil import com.aurora.store.util.PathUtil -import com.google.gson.Gson import dagger.assisted.Assisted import dagger.assisted.AssistedInject import kotlinx.coroutines.Dispatchers @@ -56,7 +55,6 @@ import com.aurora.gplayapi.data.models.File as GPlayFile @HiltWorker class DownloadWorker @AssistedInject constructor( private val downloadDao: DownloadDao, - private val gson: Gson, private val appInstaller: AppInstaller, private val authProvider: AuthProvider, private val httpClient: IHttpClient, @@ -89,10 +87,10 @@ class DownloadWorker @AssistedInject constructor( return Result.failure() } - // Try to parse input data into a valid app + // Fetch required data for download try { - val downloadData = inputData.getString(DownloadHelper.DOWNLOAD_DATA) - download = gson.fromJson(downloadData, Download::class.java) + val packageName = inputData.getString(DownloadHelper.PACKAGE_NAME) + download = downloadDao.getDownload(packageName!!) val bitmap = BitmapFactory.decodeStream(withContext(Dispatchers.IO) { (httpClient as HttpClient).call(download.iconURL).body!!.byteStream()