AppMenuSheet: Migrate to navigation components
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import com.aurora.Constants
|
|
||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.gplayapi.data.models.App
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.FragmentUpdatesBinding
|
import com.aurora.store.databinding.FragmentUpdatesBinding
|
||||||
@@ -32,7 +31,6 @@ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
|||||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
import com.aurora.store.view.ui.sheets.AppMenuSheet
|
|
||||||
import com.aurora.store.viewmodel.all.InstalledViewModel
|
import com.aurora.store.viewmodel.all.InstalledViewModel
|
||||||
|
|
||||||
class InstalledAppsFragment : BaseFragment() {
|
class InstalledAppsFragment : BaseFragment() {
|
||||||
@@ -112,19 +110,4 @@ class InstalledAppsFragment : BaseFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openAppMenuSheet(app: App) {
|
|
||||||
val fragment = childFragmentManager.findFragmentByTag(AppMenuSheet.TAG)
|
|
||||||
if (fragment != null)
|
|
||||||
childFragmentManager.beginTransaction().remove(fragment)
|
|
||||||
|
|
||||||
AppMenuSheet().apply {
|
|
||||||
arguments = Bundle().apply {
|
|
||||||
putString(Constants.STRING_EXTRA, gson.toJson(app))
|
|
||||||
}
|
|
||||||
}.show(
|
|
||||||
childFragmentManager,
|
|
||||||
AppMenuSheet.TAG
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import com.aurora.Constants
|
|
||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.gplayapi.data.models.App
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.FragmentUpdatesBinding
|
import com.aurora.store.databinding.FragmentUpdatesBinding
|
||||||
@@ -33,7 +32,6 @@ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
|||||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
import com.aurora.store.view.ui.sheets.AppMenuSheet
|
|
||||||
import com.aurora.store.viewmodel.all.PurchasedViewModel
|
import com.aurora.store.viewmodel.all.PurchasedViewModel
|
||||||
|
|
||||||
class PurchasedAppsFragment : BaseFragment() {
|
class PurchasedAppsFragment : BaseFragment() {
|
||||||
@@ -126,19 +124,4 @@ class PurchasedAppsFragment : BaseFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openAppMenuSheet(app: App) {
|
|
||||||
val fragment = childFragmentManager.findFragmentByTag(AppMenuSheet.TAG)
|
|
||||||
if (fragment != null)
|
|
||||||
childFragmentManager.beginTransaction().remove(fragment)
|
|
||||||
|
|
||||||
AppMenuSheet().apply {
|
|
||||||
arguments = Bundle().apply {
|
|
||||||
putString(Constants.STRING_EXTRA, gson.toJson(app))
|
|
||||||
}
|
|
||||||
}.show(
|
|
||||||
childFragmentManager,
|
|
||||||
AppMenuSheet.TAG
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,4 +93,8 @@ open class BaseFragment : Fragment {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun openAppMenuSheet(app: App) {
|
||||||
|
findNavController().navigate(MobileNavigationDirections.actionGlobalAppMenuSheet(app))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,31 +33,30 @@ import android.view.ViewGroup
|
|||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import com.aurora.Constants
|
import androidx.navigation.fragment.navArgs
|
||||||
import com.aurora.extensions.isRAndAbove
|
import com.aurora.extensions.isRAndAbove
|
||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.extensions.openInfo
|
||||||
|
import com.aurora.extensions.toast
|
||||||
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.installer.AppInstaller
|
import com.aurora.store.data.installer.AppInstaller
|
||||||
import com.aurora.store.data.providers.BlacklistProvider
|
import com.aurora.store.data.providers.BlacklistProvider
|
||||||
import com.aurora.store.databinding.SheetAppMenuBinding
|
import com.aurora.store.databinding.SheetAppMenuBinding
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
import com.aurora.extensions.openInfo
|
|
||||||
import com.aurora.extensions.toast
|
|
||||||
import com.aurora.store.viewmodel.sheets.SheetsViewModel
|
import com.aurora.store.viewmodel.sheets.SheetsViewModel
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
|
|
||||||
class AppMenuSheet : BaseBottomSheet() {
|
class AppMenuSheet : BaseBottomSheet() {
|
||||||
|
|
||||||
private lateinit var B: SheetAppMenuBinding
|
private lateinit var B: SheetAppMenuBinding
|
||||||
private lateinit var app: App
|
|
||||||
|
|
||||||
private val viewModel: SheetsViewModel by viewModels()
|
private val viewModel: SheetsViewModel by viewModels()
|
||||||
|
private val args: AppMenuSheetArgs by navArgs()
|
||||||
|
|
||||||
private val startForPermissions =
|
private val startForPermissions =
|
||||||
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
|
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
|
||||||
if (it) {
|
if (it) {
|
||||||
viewModel.copyApk(requireContext(), app.packageName)
|
viewModel.copyApk(requireContext(), args.app.packageName)
|
||||||
} else {
|
} else {
|
||||||
toast(R.string.permissions_denied)
|
toast(R.string.permissions_denied)
|
||||||
}
|
}
|
||||||
@@ -74,20 +73,9 @@ class AppMenuSheet : BaseBottomSheet() {
|
|||||||
|
|
||||||
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
if (arguments != null) {
|
|
||||||
val bundle = arguments
|
|
||||||
val stringExtra = bundle!!.getString(Constants.STRING_EXTRA)
|
|
||||||
app = gson.fromJson(stringExtra, App::class.java)
|
|
||||||
setupNavigationView()
|
|
||||||
} else {
|
|
||||||
dismissAllowingStateLoss()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupNavigationView() {
|
|
||||||
|
|
||||||
val blacklistProvider = BlacklistProvider.with(requireContext())
|
val blacklistProvider = BlacklistProvider.with(requireContext())
|
||||||
val isBlacklisted: Boolean = blacklistProvider.isBlacklisted(app.packageName)
|
val isBlacklisted: Boolean = blacklistProvider.isBlacklisted(args.app.packageName)
|
||||||
|
|
||||||
with(B.navigationView) {
|
with(B.navigationView) {
|
||||||
//Switch strings for Add/Remove Blacklist
|
//Switch strings for Add/Remove Blacklist
|
||||||
@@ -100,7 +88,7 @@ class AppMenuSheet : BaseBottomSheet() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
//Show/Hide actions based on installed status
|
//Show/Hide actions based on installed status
|
||||||
val installed = PackageUtil.isInstalled(requireContext(), app.packageName)
|
val installed = PackageUtil.isInstalled(requireContext(), args.app.packageName)
|
||||||
menu.findItem(R.id.action_uninstall).isVisible = installed
|
menu.findItem(R.id.action_uninstall).isVisible = installed
|
||||||
menu.findItem(R.id.action_local).isVisible = installed
|
menu.findItem(R.id.action_local).isVisible = installed
|
||||||
|
|
||||||
@@ -109,15 +97,15 @@ class AppMenuSheet : BaseBottomSheet() {
|
|||||||
R.id.action_blacklist -> {
|
R.id.action_blacklist -> {
|
||||||
|
|
||||||
if (isBlacklisted) {
|
if (isBlacklisted) {
|
||||||
blacklistProvider.whitelist(app.packageName)
|
blacklistProvider.whitelist(args.app.packageName)
|
||||||
requireContext().toast(R.string.toast_apk_whitelisted)
|
requireContext().toast(R.string.toast_apk_whitelisted)
|
||||||
} else {
|
} else {
|
||||||
blacklistProvider.blacklist(app.packageName)
|
blacklistProvider.blacklist(args.app.packageName)
|
||||||
requireContext().toast(R.string.toast_apk_blacklisted)
|
requireContext().toast(R.string.toast_apk_blacklisted)
|
||||||
}
|
}
|
||||||
|
|
||||||
EventBus.getDefault()
|
EventBus.getDefault()
|
||||||
.post(BusEvent.Blacklisted(app.packageName, ""))
|
.post(BusEvent.Blacklisted(args.app.packageName, ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_local -> {
|
R.id.action_local -> {
|
||||||
@@ -126,11 +114,11 @@ class AppMenuSheet : BaseBottomSheet() {
|
|||||||
|
|
||||||
R.id.action_uninstall -> {
|
R.id.action_uninstall -> {
|
||||||
AppInstaller.getInstance(requireContext())
|
AppInstaller.getInstance(requireContext())
|
||||||
.getPreferredInstaller().uninstall(app.packageName)
|
.getPreferredInstaller().uninstall(args.app.packageName)
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_info -> {
|
R.id.action_info -> {
|
||||||
requireContext().openInfo(app.packageName)
|
requireContext().openInfo(args.app.packageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
@@ -144,7 +132,7 @@ class AppMenuSheet : BaseBottomSheet() {
|
|||||||
if (!Environment.isExternalStorageManager()) {
|
if (!Environment.isExternalStorageManager()) {
|
||||||
startActivity(Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION))
|
startActivity(Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION))
|
||||||
} else {
|
} else {
|
||||||
viewModel.copyApk(requireContext(), app.packageName)
|
viewModel.copyApk(requireContext(), args.app.packageName)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ContextCompat.checkSelfPermission(
|
if (ContextCompat.checkSelfPermission(
|
||||||
@@ -152,7 +140,7 @@ class AppMenuSheet : BaseBottomSheet() {
|
|||||||
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
Manifest.permission.WRITE_EXTERNAL_STORAGE
|
||||||
) == PackageManager.PERMISSION_GRANTED
|
) == PackageManager.PERMISSION_GRANTED
|
||||||
) {
|
) {
|
||||||
viewModel.copyApk(requireContext(), app.packageName)
|
viewModel.copyApk(requireContext(), args.app.packageName)
|
||||||
} else {
|
} else {
|
||||||
startForPermissions.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
startForPermissions.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import android.view.ViewGroup
|
|||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import com.aurora.Constants
|
|
||||||
import com.aurora.extensions.isRAndAbove
|
import com.aurora.extensions.isRAndAbove
|
||||||
import com.aurora.extensions.toast
|
import com.aurora.extensions.toast
|
||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.gplayapi.data.models.App
|
||||||
@@ -51,7 +50,6 @@ import com.aurora.store.view.epoxy.views.app.AppUpdateViewModel_
|
|||||||
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
import com.aurora.store.view.ui.sheets.AppMenuSheet
|
|
||||||
import com.aurora.store.viewmodel.all.UpdatesViewModel
|
import com.aurora.store.viewmodel.all.UpdatesViewModel
|
||||||
import com.tonyodev.fetch2.AbstractFetchGroupListener
|
import com.tonyodev.fetch2.AbstractFetchGroupListener
|
||||||
import com.tonyodev.fetch2.Download
|
import com.tonyodev.fetch2.Download
|
||||||
@@ -331,19 +329,4 @@ class UpdatesFragment : BaseFragment() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openAppMenuSheet(app: App) {
|
|
||||||
val fragment = childFragmentManager.findFragmentByTag(AppMenuSheet.TAG)
|
|
||||||
if (fragment != null)
|
|
||||||
childFragmentManager.beginTransaction().remove(fragment)
|
|
||||||
|
|
||||||
AppMenuSheet().apply {
|
|
||||||
arguments = Bundle().apply {
|
|
||||||
putString(Constants.STRING_EXTRA, gson.toJson(app))
|
|
||||||
}
|
|
||||||
}.show(
|
|
||||||
childFragmentManager,
|
|
||||||
AppMenuSheet.TAG
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,9 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_streamBrowseFragment"
|
android:id="@+id/action_global_streamBrowseFragment"
|
||||||
app:destination="@id/streamBrowseFragment" />
|
app:destination="@id/streamBrowseFragment" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_global_appMenuSheet"
|
||||||
|
app:destination="@id/appMenuSheet" />
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/appsContainerFragment"
|
android:id="@+id/appsContainerFragment"
|
||||||
android:name="com.aurora.store.view.ui.apps.AppsContainerFragment"
|
android:name="com.aurora.store.view.ui.apps.AppsContainerFragment"
|
||||||
@@ -341,4 +344,13 @@
|
|||||||
android:name="com.aurora.store.view.ui.sheets.TOSSheet"
|
android:name="com.aurora.store.view.ui.sheets.TOSSheet"
|
||||||
android:label="TOSSheet"
|
android:label="TOSSheet"
|
||||||
tools:layout="@layout/sheet_tos" />
|
tools:layout="@layout/sheet_tos" />
|
||||||
|
<dialog
|
||||||
|
android:id="@+id/appMenuSheet"
|
||||||
|
android:name="com.aurora.store.view.ui.sheets.AppMenuSheet"
|
||||||
|
android:label="AppMenuSheet"
|
||||||
|
tools:layout="@layout/sheet_app_menu" >
|
||||||
|
<argument
|
||||||
|
android:name="app"
|
||||||
|
app:argType="com.aurora.gplayapi.data.models.App" />
|
||||||
|
</dialog>
|
||||||
</navigation>
|
</navigation>
|
||||||
|
|||||||
Reference in New Issue
Block a user