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.Context
import android.content.Intent import android.content.Intent
import com.aurora.store.R 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.data.room.download.Download
import com.aurora.store.util.Log import com.aurora.store.util.Log
import com.aurora.store.util.PackageUtil.isSharedLibraryInstalled 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_PACKAGE_NAME = "io.github.muntashirakon.AppManager"
const val AM_DEBUG_PACKAGE_NAME = "io.github.muntashirakon.AppManager.debug" const val AM_DEBUG_PACKAGE_NAME = "io.github.muntashirakon.AppManager.debug"
fun getInstallerInfo(context: Context): Installer { fun getInstallerInfo(context: Context): InstallerInfo {
return Installer( return InstallerInfo(
id = 4, id = 4,
title = context.getString(R.string.pref_install_mode_am), title = context.getString(R.string.pref_install_mode_am),
subtitle = context.getString(R.string.am_installer_subtitle), 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.extensions.isPAndAbove
import com.aurora.store.BuildConfig import com.aurora.store.BuildConfig
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.model.InstallerInfo
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.util.NotificationUtil import com.aurora.store.util.NotificationUtil
import com.aurora.store.util.PackageUtil import com.aurora.store.util.PackageUtil
@@ -58,6 +59,31 @@ class AppInstaller @Inject constructor(
companion object { companion object {
const val EXTRA_DOWNLOAD = "com.aurora.store.data.installer.AppInstaller.EXTRA_DOWNLOAD" 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) { fun notifyInstallation(context: Context, download: Download) {
val notificationManager = val notificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

View File

@@ -25,7 +25,7 @@ import android.net.Uri
import android.os.Build import android.os.Build
import com.aurora.extensions.runOnUiThread import com.aurora.extensions.runOnUiThread
import com.aurora.store.R 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.data.room.download.Download
import com.aurora.store.util.Log import com.aurora.store.util.Log
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
@@ -41,8 +41,8 @@ class NativeInstaller @Inject constructor(
companion object { companion object {
fun getInstallerInfo(context: Context): Installer { fun getInstallerInfo(context: Context): InstallerInfo {
return Installer( return InstallerInfo(
id = 1, id = 1,
title = context.getString(R.string.pref_install_mode_native), title = context.getString(R.string.pref_install_mode_native),
subtitle = context.getString(R.string.native_installer_subtitle), 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 android.content.Context
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.event.InstallerEvent 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.data.room.download.Download
import com.aurora.store.util.Log import com.aurora.store.util.Log
import com.aurora.store.util.PackageUtil.isSharedLibraryInstalled import com.aurora.store.util.PackageUtil.isSharedLibraryInstalled
@@ -40,8 +40,8 @@ class RootInstaller @Inject constructor(
companion object { companion object {
fun getInstallerInfo(context: Context): Installer { fun getInstallerInfo(context: Context): InstallerInfo {
return Installer( return InstallerInfo(
id = 2, id = 2,
title = context.getString(R.string.pref_install_mode_root), title = context.getString(R.string.pref_install_mode_root),
subtitle = context.getString(R.string.root_installer_subtitle), 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.R
import com.aurora.store.data.event.BusEvent import com.aurora.store.data.event.BusEvent
import com.aurora.store.data.event.InstallerEvent 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.data.room.download.Download
import com.aurora.store.util.Log import com.aurora.store.util.Log
import com.aurora.store.util.PackageUtil 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_PACKAGE_NAME = "com.aurora.services"
const val PRIVILEGED_EXTENSION_SERVICE_INTENT = "com.aurora.services.IPrivilegedService" const val PRIVILEGED_EXTENSION_SERVICE_INTENT = "com.aurora.services.IPrivilegedService"
fun getInstallerInfo(context: Context): Installer { fun getInstallerInfo(context: Context): InstallerInfo {
return Installer( return InstallerInfo(
id = 3, id = 3,
title = context.getString(R.string.pref_install_mode_services), title = context.getString(R.string.pref_install_mode_services),
subtitle = context.getString(R.string.services_installer_subtitle), 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.extensions.runOnUiThread
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_DOWNLOAD 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.receiver.InstallerStatusReceiver
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.util.Log import com.aurora.store.util.Log
@@ -59,8 +59,8 @@ class SessionInstaller @Inject constructor(
companion object { companion object {
fun getInstallerInfo(context: Context): Installer { fun getInstallerInfo(context: Context): InstallerInfo {
return Installer( return InstallerInfo(
id = 0, id = 0,
title = context.getString(R.string.pref_install_mode_session), title = context.getString(R.string.pref_install_mode_session),
subtitle = context.getString(R.string.session_installer_subtitle), 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.extensions.isSAndAbove
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.installer.AppInstaller.Companion.EXTRA_DOWNLOAD 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.receiver.InstallerStatusReceiver
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.util.Log import com.aurora.store.util.Log
@@ -53,8 +53,8 @@ class ShizukuInstaller @Inject constructor(
companion object { companion object {
const val SHIZUKU_PACKAGE_NAME = "moe.shizuku.privileged.api" const val SHIZUKU_PACKAGE_NAME = "moe.shizuku.privileged.api"
fun getInstallerInfo(context: Context): Installer { fun getInstallerInfo(context: Context): InstallerInfo {
return Installer( return InstallerInfo(
id = 5, id = 5,
title = context.getString(R.string.pref_install_mode_shizuku), title = context.getString(R.string.pref_install_mode_shizuku),
subtitle = context.getString(R.string.shizuku_installer_subtitle), subtitle = context.getString(R.string.shizuku_installer_subtitle),

View File

@@ -19,7 +19,7 @@
package com.aurora.store.data.model package com.aurora.store.data.model
data class Installer( data class InstallerInfo(
var id: Int, var id: Int,
var title: String, var title: String,
var subtitle: String, var subtitle: String,
@@ -27,7 +27,7 @@ data class Installer(
) { ) {
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
return when (other) { return when (other) {
is Installer -> other.id == id is InstallerInfo -> other.id == id
else -> false else -> false
} }
} }

View File

@@ -27,7 +27,7 @@ import com.airbnb.epoxy.CallbackProp
import com.airbnb.epoxy.ModelProp import com.airbnb.epoxy.ModelProp
import com.airbnb.epoxy.ModelView import com.airbnb.epoxy.ModelView
import com.aurora.store.R 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.databinding.ViewInstallerBinding
import com.aurora.store.view.epoxy.views.BaseView import com.aurora.store.view.epoxy.views.BaseView
@@ -61,7 +61,7 @@ class InstallerView : RelativeLayout {
} }
@ModelProp @ModelProp
fun installer(installer: Installer) { fun installer(installer: InstallerInfo) {
B.line1.text = installer.title B.line1.text = installer.title
B.line2.text = installer.subtitle B.line2.text = installer.subtitle
B.line3.text = installer.description 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.isOAndAbove
import com.aurora.extensions.showDialog import com.aurora.extensions.showDialog
import com.aurora.store.R 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.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.databinding.FragmentInstallerBinding
import com.aurora.store.util.Log import com.aurora.store.util.Log
import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences
@@ -97,7 +90,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
// RecyclerView // RecyclerView
binding.epoxyRecycler.withModels { binding.epoxyRecycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)
getInstallers().forEach { AppInstaller.getAvailableInstallersInfo(requireContext()).forEach {
add( add(
InstallerViewModel_() InstallerViewModel_()
.id(it.id) .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
}
} }