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 <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-05-08 16:22:36 +05:30
parent 4b11d4855a
commit d61c3342a7
10 changed files with 49 additions and 60 deletions

View File

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

View File

@@ -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<InstallerInfo> {
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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
}
}

View File

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

View File

@@ -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<Installer> {
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
}
}