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 <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-01-12 09:26:54 +07:00
parent d69ec391ed
commit 34833abb50
2 changed files with 6 additions and 11 deletions

View File

@@ -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<DownloadWorker>()

View File

@@ -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()