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:
@@ -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.room.update.Update
|
||||||
import com.aurora.store.data.work.DownloadWorker
|
import com.aurora.store.data.work.DownloadWorker
|
||||||
import com.aurora.store.util.PathUtil
|
import com.aurora.store.util.PathUtil
|
||||||
import com.google.gson.Gson
|
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
@@ -30,17 +29,15 @@ import javax.inject.Inject
|
|||||||
*/
|
*/
|
||||||
class DownloadHelper @Inject constructor(
|
class DownloadHelper @Inject constructor(
|
||||||
@ApplicationContext private val context: Context,
|
@ApplicationContext private val context: Context,
|
||||||
private val downloadDao: DownloadDao,
|
private val downloadDao: DownloadDao
|
||||||
private val gson: Gson
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val DOWNLOAD_WORKER = "DOWNLOAD_WORKER"
|
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_APP = "DOWNLOAD_APP"
|
||||||
private const val DOWNLOAD_UPDATE = "DOWNLOAD_UPDATE"
|
private const val DOWNLOAD_UPDATE = "DOWNLOAD_UPDATE"
|
||||||
private const val PACKAGE_NAME = "PACKAGE_NAME"
|
|
||||||
private const val VERSION_CODE = "VERSION_CODE"
|
private const val VERSION_CODE = "VERSION_CODE"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,7 +163,7 @@ class DownloadHelper @Inject constructor(
|
|||||||
|
|
||||||
private fun trigger(download: Download) {
|
private fun trigger(download: Download) {
|
||||||
val inputData = Data.Builder()
|
val inputData = Data.Builder()
|
||||||
.putString(DOWNLOAD_DATA, gson.toJson(download))
|
.putString(PACKAGE_NAME, download.packageName)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val work = OneTimeWorkRequestBuilder<DownloadWorker>()
|
val work = OneTimeWorkRequestBuilder<DownloadWorker>()
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import com.aurora.store.data.room.download.DownloadDao
|
|||||||
import com.aurora.store.util.CertUtil
|
import com.aurora.store.util.CertUtil
|
||||||
import com.aurora.store.util.NotificationUtil
|
import com.aurora.store.util.NotificationUtil
|
||||||
import com.aurora.store.util.PathUtil
|
import com.aurora.store.util.PathUtil
|
||||||
import com.google.gson.Gson
|
|
||||||
import dagger.assisted.Assisted
|
import dagger.assisted.Assisted
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -56,7 +55,6 @@ import com.aurora.gplayapi.data.models.File as GPlayFile
|
|||||||
@HiltWorker
|
@HiltWorker
|
||||||
class DownloadWorker @AssistedInject constructor(
|
class DownloadWorker @AssistedInject constructor(
|
||||||
private val downloadDao: DownloadDao,
|
private val downloadDao: DownloadDao,
|
||||||
private val gson: Gson,
|
|
||||||
private val appInstaller: AppInstaller,
|
private val appInstaller: AppInstaller,
|
||||||
private val authProvider: AuthProvider,
|
private val authProvider: AuthProvider,
|
||||||
private val httpClient: IHttpClient,
|
private val httpClient: IHttpClient,
|
||||||
@@ -89,10 +87,10 @@ class DownloadWorker @AssistedInject constructor(
|
|||||||
return Result.failure()
|
return Result.failure()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to parse input data into a valid app
|
// Fetch required data for download
|
||||||
try {
|
try {
|
||||||
val downloadData = inputData.getString(DownloadHelper.DOWNLOAD_DATA)
|
val packageName = inputData.getString(DownloadHelper.PACKAGE_NAME)
|
||||||
download = gson.fromJson(downloadData, Download::class.java)
|
download = downloadDao.getDownload(packageName!!)
|
||||||
|
|
||||||
val bitmap = BitmapFactory.decodeStream(withContext(Dispatchers.IO) {
|
val bitmap = BitmapFactory.decodeStream(withContext(Dispatchers.IO) {
|
||||||
(httpClient as HttpClient).call(download.iconURL).body!!.byteStream()
|
(httpClient as HttpClient).call(download.iconURL).body!!.byteStream()
|
||||||
|
|||||||
Reference in New Issue
Block a user