diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f38363ebb..974132309 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -109,7 +109,6 @@ - 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 86aad51f9..3d852608e 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 @@ -19,7 +19,6 @@ package com.aurora.store.view.ui.commons -import android.app.ActivityOptions import android.content.Intent import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment @@ -51,11 +50,12 @@ open class BaseFragment : Fragment { } fun openCategoryBrowseActivity(category: Category) { - val intent = Intent(context, CategoryBrowseActivity::class.java) - intent.putExtra(Constants.STRING_EXTRA, category.title) - intent.putExtra(Constants.BROWSE_EXTRA, category.browseUrl) - val options = ActivityOptions.makeSceneTransitionAnimation(requireActivity()) - startActivity(intent, options.toBundle()) + findNavController().navigate( + MobileNavigationDirections.actionGlobalCategoryBrowseFragment( + category.title, + category.browseUrl + ) + ) } fun openStreamBrowseActivity(browseUrl: String, title: String = "") { diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseActivity.kt b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt similarity index 68% rename from app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt index a265318aa..44900e9aa 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt @@ -20,9 +20,11 @@ package com.aurora.store.view.ui.commons import android.os.Bundle +import android.view.View import android.widget.Toast import androidx.lifecycle.ViewModelProvider -import com.aurora.Constants +import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamCluster @@ -36,78 +38,53 @@ import com.aurora.store.view.ui.sheets.AppPeekDialogSheet import com.aurora.store.viewmodel.subcategory.SubCategoryClusterViewModel -class CategoryBrowseActivity : BaseActivity(), GenericCarouselController.Callbacks { +class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler), + GenericCarouselController.Callbacks { + + private var _binding: ActivityGenericRecyclerBinding? = null + private val binding: ActivityGenericRecyclerBinding + get() = _binding!! + + private val args: CategoryBrowseFragmentArgs by navArgs() - lateinit var B: ActivityGenericRecyclerBinding lateinit var C: GenericCarouselController lateinit var VM: SubCategoryClusterViewModel lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener - lateinit var title: String - lateinit var homeUrl: String + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) - override fun onConnected() { - hideNetworkConnectivitySheet() - } - - override fun onDisconnected() { - showNetworkConnectivitySheet() - } - - override fun onReconnected() { - - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - B = ActivityGenericRecyclerBinding.inflate(layoutInflater) + _binding = ActivityGenericRecyclerBinding.bind(view) C = CategoryCarouselController(this) VM = ViewModelProvider(this)[SubCategoryClusterViewModel::class.java] - setContentView(B.root) - - attachToolbar() - attachRecycler() - - intent.apply { - homeUrl = getStringExtra(Constants.BROWSE_EXTRA).toString() - title = getStringExtra(Constants.STRING_EXTRA).toString() - VM.observeCategory(homeUrl) - updateTitle(title) + // Toolbar + binding.layoutToolbarAction.apply { + txtTitle.text = args.title + imgActionPrimary.setOnClickListener { findNavController().navigateUp() } } - updateController(null) - } + // RecyclerView + binding.recycler.setController(C) - private fun updateTitle(title: String) { - B.layoutToolbarAction.txtTitle.text = title - } - - private fun attachToolbar() { - B.layoutToolbarAction.imgActionPrimary.setOnClickListener { - finishAfterTransition() - } - } - - private fun attachRecycler() { - - B.recycler.setController(C) - - VM.liveData.observe(this) { + VM.liveData.observe(viewLifecycleOwner) { when (it) { is ViewState.Empty -> { } + is ViewState.Loading -> { updateController(null) } + is ViewState.Error -> { } + is ViewState.Success<*> -> { updateController(it.data as StreamBundle) } + else -> {} } } @@ -120,8 +97,15 @@ class CategoryBrowseActivity : BaseActivity(), GenericCarouselController.Callbac } endlessRecyclerOnScrollListener.disable() + binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) - B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) + VM.observeCategory(args.browseUrl) + updateController(null) + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null } private fun updateController(streamBundle: StreamBundle?) { @@ -134,7 +118,11 @@ class CategoryBrowseActivity : BaseActivity(), GenericCarouselController.Callbac if (streamCluster.clusterBrowseUrl.isNotEmpty()) openStreamBrowseActivity(streamCluster.clusterBrowseUrl) else - Toast.makeText(this, getString(R.string.toast_page_unavailable), Toast.LENGTH_SHORT) + Toast.makeText( + requireContext(), + getString(R.string.toast_page_unavailable), + Toast.LENGTH_SHORT + ) .show() } @@ -147,6 +135,6 @@ class CategoryBrowseActivity : BaseActivity(), GenericCarouselController.Callbac } override fun onAppLongClick(app: App) { - AppPeekDialogSheet.newInstance(app).show(supportFragmentManager, "APDS") + AppPeekDialogSheet.newInstance(app).show(childFragmentManager, "APDS") } } diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 0d8dd5ced..7b75e9881 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -101,7 +101,7 @@ + tools:layout="@layout/fragment_details"> @@ -109,7 +109,21 @@ app:action="android.intent.action.VIEW" app:uri="play.google.com/store/apps/details?id={packageName}" /> + + + + +