From d61c3342a771a1241e445c2687861de01a13dfcb Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 8 May 2024 16:22:36 +0530 Subject: [PATCH] InstallerFragment: Rename and relocate method to get available installer info * Keep all installer related code to AppInstaller as much as possible Signed-off-by: Aayush Gupta --- .../store/data/installer/AMInstaller.kt | 6 +-- .../store/data/installer/AppInstaller.kt | 26 +++++++++++++ .../store/data/installer/NativeInstaller.kt | 6 +-- .../store/data/installer/RootInstaller.kt | 6 +-- .../store/data/installer/ServiceInstaller.kt | 6 +-- .../store/data/installer/SessionInstaller.kt | 6 +-- .../store/data/installer/ShizukuInstaller.kt | 6 +-- .../model/{Installer.kt => InstallerInfo.kt} | 4 +- .../epoxy/views/preference/InstallerView.kt | 4 +- .../view/ui/preferences/InstallerFragment.kt | 39 +------------------ 10 files changed, 49 insertions(+), 60 deletions(-) rename app/src/main/java/com/aurora/store/data/model/{Installer.kt => InstallerInfo.kt} (93%) diff --git a/app/src/main/java/com/aurora/store/data/installer/AMInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/AMInstaller.kt index e894c8d6d..05fdd7589 100644 --- a/app/src/main/java/com/aurora/store/data/installer/AMInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/AMInstaller.kt @@ -3,7 +3,7 @@ package com.aurora.store.data.installer import android.content.Context import android.content.Intent import com.aurora.store.R -import com.aurora.store.data.model.Installer +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.room.download.Download import com.aurora.store.util.Log import com.aurora.store.util.PackageUtil.isSharedLibraryInstalled @@ -24,8 +24,8 @@ class AMInstaller @Inject constructor( const val AM_PACKAGE_NAME = "io.github.muntashirakon.AppManager" const val AM_DEBUG_PACKAGE_NAME = "io.github.muntashirakon.AppManager.debug" - fun getInstallerInfo(context: Context): Installer { - return Installer( + fun getInstallerInfo(context: Context): InstallerInfo { + return InstallerInfo( id = 4, title = context.getString(R.string.pref_install_mode_am), subtitle = context.getString(R.string.am_installer_subtitle), 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 1d1d9c8be..4de068953 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 @@ -32,6 +32,7 @@ import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isPAndAbove import com.aurora.store.BuildConfig import com.aurora.store.R +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.room.download.Download import com.aurora.store.util.NotificationUtil import com.aurora.store.util.PackageUtil @@ -58,6 +59,31 @@ class AppInstaller @Inject constructor( companion object { const val EXTRA_DOWNLOAD = "com.aurora.store.data.installer.AppInstaller.EXTRA_DOWNLOAD" + fun getAvailableInstallersInfo(context: Context): List { + val installers = mutableListOf( + SessionInstaller.getInstallerInfo(context), + NativeInstaller.getInstallerInfo(context) + ) + + if (hasRootAccess()) { + installers.add(RootInstaller.getInstallerInfo(context)) + } + + if (hasAuroraService(context)) { + installers.add(ServiceInstaller.getInstallerInfo(context)) + } + + if (hasAppManager(context)) { + installers.add(AMInstaller.getInstallerInfo(context)) + } + + if (isOAndAbove() && hasShizukuOrSui(context)) { + installers.add(ShizukuInstaller.getInstallerInfo(context)) + } + + return installers + } + fun notifyInstallation(context: Context, download: Download) { val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager diff --git a/app/src/main/java/com/aurora/store/data/installer/NativeInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/NativeInstaller.kt index 4fdc856fb..0705a961b 100644 --- a/app/src/main/java/com/aurora/store/data/installer/NativeInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/NativeInstaller.kt @@ -25,7 +25,7 @@ import android.net.Uri import android.os.Build import com.aurora.extensions.runOnUiThread import com.aurora.store.R -import com.aurora.store.data.model.Installer +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.room.download.Download import com.aurora.store.util.Log import dagger.hilt.android.qualifiers.ApplicationContext @@ -41,8 +41,8 @@ class NativeInstaller @Inject constructor( companion object { - fun getInstallerInfo(context: Context): Installer { - return Installer( + fun getInstallerInfo(context: Context): InstallerInfo { + return InstallerInfo( id = 1, title = context.getString(R.string.pref_install_mode_native), subtitle = context.getString(R.string.native_installer_subtitle), diff --git a/app/src/main/java/com/aurora/store/data/installer/RootInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/RootInstaller.kt index 07727e742..f8ef3206e 100644 --- a/app/src/main/java/com/aurora/store/data/installer/RootInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/RootInstaller.kt @@ -22,7 +22,7 @@ package com.aurora.store.data.installer import android.content.Context import com.aurora.store.R import com.aurora.store.data.event.InstallerEvent -import com.aurora.store.data.model.Installer +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.room.download.Download import com.aurora.store.util.Log import com.aurora.store.util.PackageUtil.isSharedLibraryInstalled @@ -40,8 +40,8 @@ class RootInstaller @Inject constructor( companion object { - fun getInstallerInfo(context: Context): Installer { - return Installer( + fun getInstallerInfo(context: Context): InstallerInfo { + return InstallerInfo( id = 2, title = context.getString(R.string.pref_install_mode_root), subtitle = context.getString(R.string.root_installer_subtitle), diff --git a/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt index 57f369dca..416dfb2a7 100644 --- a/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/ServiceInstaller.kt @@ -37,7 +37,7 @@ import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.event.BusEvent import com.aurora.store.data.event.InstallerEvent -import com.aurora.store.data.model.Installer +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.room.download.Download import com.aurora.store.util.Log import com.aurora.store.util.PackageUtil @@ -65,8 +65,8 @@ class ServiceInstaller @Inject constructor( const val PRIVILEGED_EXTENSION_PACKAGE_NAME = "com.aurora.services" const val PRIVILEGED_EXTENSION_SERVICE_INTENT = "com.aurora.services.IPrivilegedService" - fun getInstallerInfo(context: Context): Installer { - return Installer( + fun getInstallerInfo(context: Context): InstallerInfo { + return InstallerInfo( id = 3, title = context.getString(R.string.pref_install_mode_services), subtitle = context.getString(R.string.services_installer_subtitle), diff --git a/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt index a563f55bb..d83267eff 100644 --- a/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/SessionInstaller.kt @@ -37,7 +37,7 @@ import com.aurora.extensions.isUAndAbove import com.aurora.extensions.runOnUiThread import com.aurora.store.R import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_DOWNLOAD -import com.aurora.store.data.model.Installer +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.receiver.InstallerStatusReceiver import com.aurora.store.data.room.download.Download import com.aurora.store.util.Log @@ -59,8 +59,8 @@ class SessionInstaller @Inject constructor( companion object { - fun getInstallerInfo(context: Context): Installer { - return Installer( + fun getInstallerInfo(context: Context): InstallerInfo { + return InstallerInfo( id = 0, title = context.getString(R.string.pref_install_mode_session), subtitle = context.getString(R.string.session_installer_subtitle), diff --git a/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt index 1e542cfca..f8c998c0c 100644 --- a/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt @@ -32,7 +32,7 @@ import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isSAndAbove import com.aurora.store.R import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_DOWNLOAD -import com.aurora.store.data.model.Installer +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.receiver.InstallerStatusReceiver import com.aurora.store.data.room.download.Download import com.aurora.store.util.Log @@ -53,8 +53,8 @@ class ShizukuInstaller @Inject constructor( companion object { const val SHIZUKU_PACKAGE_NAME = "moe.shizuku.privileged.api" - fun getInstallerInfo(context: Context): Installer { - return Installer( + fun getInstallerInfo(context: Context): InstallerInfo { + return InstallerInfo( id = 5, title = context.getString(R.string.pref_install_mode_shizuku), subtitle = context.getString(R.string.shizuku_installer_subtitle), diff --git a/app/src/main/java/com/aurora/store/data/model/Installer.kt b/app/src/main/java/com/aurora/store/data/model/InstallerInfo.kt similarity index 93% rename from app/src/main/java/com/aurora/store/data/model/Installer.kt rename to app/src/main/java/com/aurora/store/data/model/InstallerInfo.kt index 402b9b2a6..0791d5477 100644 --- a/app/src/main/java/com/aurora/store/data/model/Installer.kt +++ b/app/src/main/java/com/aurora/store/data/model/InstallerInfo.kt @@ -19,7 +19,7 @@ package com.aurora.store.data.model -data class Installer( +data class InstallerInfo( var id: Int, var title: String, var subtitle: String, @@ -27,7 +27,7 @@ data class Installer( ) { override fun equals(other: Any?): Boolean { return when (other) { - is Installer -> other.id == id + is InstallerInfo -> other.id == id else -> false } } diff --git a/app/src/main/java/com/aurora/store/view/epoxy/views/preference/InstallerView.kt b/app/src/main/java/com/aurora/store/view/epoxy/views/preference/InstallerView.kt index d297471bf..0d59de621 100644 --- a/app/src/main/java/com/aurora/store/view/epoxy/views/preference/InstallerView.kt +++ b/app/src/main/java/com/aurora/store/view/epoxy/views/preference/InstallerView.kt @@ -27,7 +27,7 @@ import com.airbnb.epoxy.CallbackProp import com.airbnb.epoxy.ModelProp import com.airbnb.epoxy.ModelView import com.aurora.store.R -import com.aurora.store.data.model.Installer +import com.aurora.store.data.model.InstallerInfo import com.aurora.store.databinding.ViewInstallerBinding import com.aurora.store.view.epoxy.views.BaseView @@ -61,7 +61,7 @@ class InstallerView : RelativeLayout { } @ModelProp - fun installer(installer: Installer) { + fun installer(installer: InstallerInfo) { B.line1.text = installer.title B.line2.text = installer.subtitle B.line3.text = installer.description diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt index f7bf2e944..b58f6f997 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt @@ -28,14 +28,7 @@ import com.aurora.extensions.isMiuiOptimizationDisabled import com.aurora.extensions.isOAndAbove import com.aurora.extensions.showDialog import com.aurora.store.R -import com.aurora.store.data.installer.AMInstaller import com.aurora.store.data.installer.AppInstaller -import com.aurora.store.data.installer.NativeInstaller -import com.aurora.store.data.installer.RootInstaller -import com.aurora.store.data.installer.ServiceInstaller -import com.aurora.store.data.installer.SessionInstaller -import com.aurora.store.data.installer.ShizukuInstaller -import com.aurora.store.data.model.Installer import com.aurora.store.databinding.FragmentInstallerBinding import com.aurora.store.util.Log import com.aurora.store.util.Preferences @@ -97,7 +90,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { // RecyclerView binding.epoxyRecycler.withModels { setFilterDuplicates(true) - getInstallers().forEach { + AppInstaller.getAvailableInstallersInfo(requireContext()).forEach { add( InstallerViewModel_() .id(it.id) @@ -198,34 +191,4 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { } } } - - private fun getInstallers(): List { - val installers = mutableListOf( - SessionInstaller.getInstallerInfo(requireContext()), - NativeInstaller.getInstallerInfo(requireContext()) - ) - - // 2 - if (AppInstaller.hasRootAccess()) { - installers.add(RootInstaller.getInstallerInfo(requireContext())) - } - - // 3 - if (AppInstaller.hasAuroraService(requireContext())) { - installers.add(ServiceInstaller.getInstallerInfo(requireContext())) - } - - // 4 - if (AppInstaller.hasAppManager(requireContext())) { - installers.add(AMInstaller.getInstallerInfo(requireContext())) - } - - // 5 - if (isOAndAbove() && AppInstaller.hasShizukuOrSui(requireContext())) { - installers.add(ShizukuInstaller.getInstallerInfo(requireContext())) - } - - return installers - } - }