diff --git a/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt index d56c4a307..8ae8185a1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt @@ -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 - ) - } } diff --git a/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt index da532c779..9410e20aa 100644 --- a/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt @@ -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 - ) - } } diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt index df2d0cae5..291631305 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt @@ -93,4 +93,8 @@ open class BaseFragment : Fragment { ) ) } + + fun openAppMenuSheet(app: App) { + findNavController().navigate(MobileNavigationDirections.actionGlobalAppMenuSheet(app)) + } } diff --git a/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt b/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt index d56746741..e1ac5722b 100644 --- a/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt +++ b/app/src/main/java/com/aurora/store/view/ui/sheets/AppMenuSheet.kt @@ -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) } diff --git a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt index 3609f70a7..37fd2c3fc 100644 --- a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt @@ -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 - ) - } } diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index abd062a3c..c7789e19a 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -44,6 +44,9 @@ + + + +