From e0d1185f16cf306c025e16499a748426a29a8bff Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 21 Feb 2024 20:31:17 +0530 Subject: [PATCH] DownloadWorker: Always run onSuccess block as NonCancellable * Change context in SessionInstaller when starting activity instead Signed-off-by: Aayush Gupta --- .../aurora/store/data/receiver/InstallerStatusReceiver.kt | 3 ++- .../main/java/com/aurora/store/data/work/DownloadWorker.kt | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/receiver/InstallerStatusReceiver.kt b/app/src/main/java/com/aurora/store/data/receiver/InstallerStatusReceiver.kt index 009472c93..ae86be05b 100644 --- a/app/src/main/java/com/aurora/store/data/receiver/InstallerStatusReceiver.kt +++ b/app/src/main/java/com/aurora/store/data/receiver/InstallerStatusReceiver.kt @@ -25,6 +25,7 @@ import android.content.Intent import android.content.pm.PackageInstaller import android.util.Log import androidx.core.content.IntentCompat +import com.aurora.extensions.runOnUiThread import com.aurora.gplayapi.data.models.App import com.aurora.store.R import com.aurora.store.data.event.InstallerEvent @@ -80,7 +81,7 @@ class InstallerStatusReceiver : BroadcastReceiver() { it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) try { - context.startActivity(it) + runOnUiThread { context.startActivity(it) } } catch (exception: Exception) { Log.e(TAG, "Failed to trigger installation!", exception) } 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 da9992e13..118efdd17 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 @@ -20,7 +20,6 @@ import com.aurora.extensions.isSAndAbove import com.aurora.extensions.requiresObbDir import com.aurora.gplayapi.helpers.PurchaseHelper import com.aurora.store.data.installer.AppInstaller -import com.aurora.store.data.installer.SessionInstaller import com.aurora.store.data.model.DownloadInfo import com.aurora.store.data.model.DownloadStatus import com.aurora.store.data.model.Request @@ -166,11 +165,9 @@ class DownloadWorker @AssistedInject constructor( } private suspend fun onSuccess() { - val installer = appInstaller.getPreferredInstaller() - val dispatcher = if (installer is SessionInstaller) Dispatchers.Main else NonCancellable - withContext(dispatcher) { + withContext(NonCancellable) { try { - installer.install(download) + appInstaller.getPreferredInstaller().install(download) } catch (exception: Exception) { Log.e(TAG, "Failed to install ${download.packageName}", exception) }