From 09c64a7002a442671e183a9dc1a3f694bddedf0e Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sat, 20 Jan 2024 15:22:06 +0530 Subject: [PATCH] AppInstaller: Use hilt to manage instance Signed-off-by: Aayush Gupta --- .../aurora/store/data/installer/AppInstaller.kt | 11 +++-------- .../store/data/receiver/PackageManagerReceiver.kt | 7 ++++--- .../com/aurora/store/data/work/DownloadWorker.kt | 15 ++++++--------- .../store/view/ui/sheets/DownloadMenuSheet.kt | 13 +++++++------ 4 files changed, 20 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt index 86b6d02b5..a4a70235a 100644 --- a/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt @@ -33,13 +33,14 @@ import com.aurora.store.util.PackageUtil import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID import com.topjohnwu.superuser.Shell +import dagger.hilt.android.qualifiers.ApplicationContext import rikka.shizuku.Shizuku import rikka.sui.Sui +import javax.inject.Inject -open class AppInstaller private constructor(var context: Context) { +class AppInstaller @Inject constructor(@ApplicationContext private val context: Context) { companion object { - private var instance: AppInstaller? = null fun getErrorString(context: Context, status: Int): String { return when (status) { PackageInstaller.STATUS_FAILURE_ABORTED -> context.getString(R.string.installer_status_user_action) @@ -51,12 +52,6 @@ open class AppInstaller private constructor(var context: Context) { else -> context.getString(R.string.installer_status_failure) } } - fun getInstance(context: Context): AppInstaller { - if (instance == null) { - instance = AppInstaller(context.applicationContext) - } - return instance!! - } fun hasRootAccess(): Boolean { return Shell.getShell().isRoot diff --git a/app/src/main/java/com/aurora/store/data/receiver/PackageManagerReceiver.kt b/app/src/main/java/com/aurora/store/data/receiver/PackageManagerReceiver.kt index 75279fb5a..4e910c02b 100644 --- a/app/src/main/java/com/aurora/store/data/receiver/PackageManagerReceiver.kt +++ b/app/src/main/java/com/aurora/store/data/receiver/PackageManagerReceiver.kt @@ -49,6 +49,9 @@ open class PackageManagerReceiver : BroadcastReceiver() { @Inject lateinit var downloadWorkerUtil: DownloadWorkerUtil + @Inject + lateinit var appInstaller: AppInstaller + override fun onReceive(context: Context, intent: Intent) = goAsync { if (intent.action != null && intent.data != null) { val packageName = intent.data!!.encodedSchemeSpecificPart @@ -74,9 +77,7 @@ open class PackageManagerReceiver : BroadcastReceiver() { } //Clear installation queue - AppInstaller.getInstance(context) - .getPreferredInstaller() - .removeFromInstallQueue(packageName) + appInstaller.getPreferredInstaller().removeFromInstallQueue(packageName) } } 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 b70482793..2adbb29ed 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 @@ -50,6 +50,7 @@ import com.aurora.gplayapi.data.models.File as GPlayFile class DownloadWorker @AssistedInject constructor( private val downloadDao: DownloadDao, private val gson: Gson, + private val appInstaller: AppInstaller, @Assisted private val appContext: Context, @Assisted workerParams: WorkerParameters ) : CoroutineWorker(appContext, workerParams) { @@ -161,16 +162,12 @@ class DownloadWorker @AssistedInject constructor( withContext(NonCancellable) { try { val downloadDir = PathUtil.getAppDownloadDir( - appContext, - download.packageName, - download.versionCode + appContext, download.packageName, download.versionCode + ) + appInstaller.getPreferredInstaller().install( + download.packageName, + downloadDir.listFiles()!!.filter { it.path.endsWith(".apk") } ) - AppInstaller.getInstance(appContext) - .getPreferredInstaller() - .install( - download.packageName, - downloadDir.listFiles()!!.filter { it.path.endsWith(".apk") } - ) } catch (exception: Exception) { Log.e(TAG, "Failed to install ${download.packageName}", exception) } diff --git a/app/src/main/java/com/aurora/store/view/ui/sheets/DownloadMenuSheet.kt b/app/src/main/java/com/aurora/store/view/ui/sheets/DownloadMenuSheet.kt index 1bcba6f17..bf38d44a1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/sheets/DownloadMenuSheet.kt +++ b/app/src/main/java/com/aurora/store/view/ui/sheets/DownloadMenuSheet.kt @@ -54,6 +54,9 @@ class DownloadMenuSheet : BaseBottomSheet() { @Inject lateinit var downloadWorkerUtil: DownloadWorkerUtil + @Inject + lateinit var appInstaller: AppInstaller + override fun onCreateContentView( inflater: LayoutInflater, container: ViewGroup, @@ -113,12 +116,10 @@ class DownloadMenuSheet : BaseBottomSheet() { args.download.packageName, args.download.versionCode ) - AppInstaller.getInstance(requireContext()) - .getPreferredInstaller() - .install( - args.download.packageName, - downloadDir.listFiles()!!.filter { it.path.endsWith(".apk") } - ) + appInstaller.getPreferredInstaller().install( + args.download.packageName, + downloadDir.listFiles()!!.filter { it.path.endsWith(".apk") } + ) } catch (exception: Exception) { Log.e(TAG, "Failed to install ${args.download.packageName}", exception) }