AppMenuSheet: Migrate to navigation components

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-08-04 17:02:14 +08:00
parent c0af12c23f
commit e35384e1f7
6 changed files with 30 additions and 77 deletions

View File

@@ -24,7 +24,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
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.shimmer.AppListViewShimmerModel_
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.view.ui.sheets.AppMenuSheet
import com.aurora.store.viewmodel.all.InstalledViewModel
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
)
}
}

View File

@@ -24,7 +24,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
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.shimmer.AppListViewShimmerModel_
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.view.ui.sheets.AppMenuSheet
import com.aurora.store.viewmodel.all.PurchasedViewModel
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
)
}
}

View File

@@ -93,4 +93,8 @@ open class BaseFragment : Fragment {
)
)
}
fun openAppMenuSheet(app: App) {
findNavController().navigate(MobileNavigationDirections.actionGlobalAppMenuSheet(app))
}
}

View File

@@ -33,31 +33,30 @@ import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.fragment.app.viewModels
import com.aurora.Constants
import androidx.navigation.fragment.navArgs
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.data.event.BusEvent
import com.aurora.store.data.installer.AppInstaller
import com.aurora.store.data.providers.BlacklistProvider
import com.aurora.store.databinding.SheetAppMenuBinding
import com.aurora.store.util.PackageUtil
import com.aurora.extensions.openInfo
import com.aurora.extensions.toast
import com.aurora.store.viewmodel.sheets.SheetsViewModel
import org.greenrobot.eventbus.EventBus
class AppMenuSheet : BaseBottomSheet() {
private lateinit var B: SheetAppMenuBinding
private lateinit var app: App
private val viewModel: SheetsViewModel by viewModels()
private val args: AppMenuSheetArgs by navArgs()
private val startForPermissions =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
if (it) {
viewModel.copyApk(requireContext(), app.packageName)
viewModel.copyApk(requireContext(), args.app.packageName)
} else {
toast(R.string.permissions_denied)
}
@@ -74,20 +73,9 @@ class AppMenuSheet : BaseBottomSheet() {
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
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 isBlacklisted: Boolean = blacklistProvider.isBlacklisted(app.packageName)
val isBlacklisted: Boolean = blacklistProvider.isBlacklisted(args.app.packageName)
with(B.navigationView) {
//Switch strings for Add/Remove Blacklist
@@ -100,7 +88,7 @@ class AppMenuSheet : BaseBottomSheet() {
)
//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_local).isVisible = installed
@@ -109,15 +97,15 @@ class AppMenuSheet : BaseBottomSheet() {
R.id.action_blacklist -> {
if (isBlacklisted) {
blacklistProvider.whitelist(app.packageName)
blacklistProvider.whitelist(args.app.packageName)
requireContext().toast(R.string.toast_apk_whitelisted)
} else {
blacklistProvider.blacklist(app.packageName)
blacklistProvider.blacklist(args.app.packageName)
requireContext().toast(R.string.toast_apk_blacklisted)
}
EventBus.getDefault()
.post(BusEvent.Blacklisted(app.packageName, ""))
.post(BusEvent.Blacklisted(args.app.packageName, ""))
}
R.id.action_local -> {
@@ -126,11 +114,11 @@ class AppMenuSheet : BaseBottomSheet() {
R.id.action_uninstall -> {
AppInstaller.getInstance(requireContext())
.getPreferredInstaller().uninstall(app.packageName)
.getPreferredInstaller().uninstall(args.app.packageName)
}
R.id.action_info -> {
requireContext().openInfo(app.packageName)
requireContext().openInfo(args.app.packageName)
}
}
dismissAllowingStateLoss()
@@ -144,7 +132,7 @@ class AppMenuSheet : BaseBottomSheet() {
if (!Environment.isExternalStorageManager()) {
startActivity(Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION))
} else {
viewModel.copyApk(requireContext(), app.packageName)
viewModel.copyApk(requireContext(), args.app.packageName)
}
} else {
if (ContextCompat.checkSelfPermission(
@@ -152,7 +140,7 @@ class AppMenuSheet : BaseBottomSheet() {
Manifest.permission.WRITE_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED
) {
viewModel.copyApk(requireContext(), app.packageName)
viewModel.copyApk(requireContext(), args.app.packageName)
} else {
startForPermissions.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}

View File

@@ -34,7 +34,6 @@ import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants
import com.aurora.extensions.isRAndAbove
import com.aurora.extensions.toast
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.shimmer.AppListViewShimmerModel_
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.tonyodev.fetch2.AbstractFetchGroupListener
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
)
}
}

View File

@@ -44,6 +44,9 @@
<action
android:id="@+id/action_global_streamBrowseFragment"
app:destination="@id/streamBrowseFragment" />
<action
android:id="@+id/action_global_appMenuSheet"
app:destination="@id/appMenuSheet" />
<fragment
android:id="@+id/appsContainerFragment"
android:name="com.aurora.store.view.ui.apps.AppsContainerFragment"
@@ -341,4 +344,13 @@
android:name="com.aurora.store.view.ui.sheets.TOSSheet"
android:label="TOSSheet"
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>