From 45a130a43089e33407010e34efdf7a9df8bfc24b Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 5 Jul 2023 20:04:48 +0530 Subject: [PATCH] Migrate StreamBrowseActivity to fragment Signed-off-by: Aayush Gupta --- app/src/main/AndroidManifest.xml | 1 - .../store/view/ui/commons/BaseFragment.kt | 16 ++-- .../view/ui/commons/CategoryBrowseFragment.kt | 2 +- .../view/ui/commons/EarlyAccessFragment.kt | 2 +- .../store/view/ui/commons/ForYouFragment.kt | 3 +- ...wseActivity.kt => StreamBrowseFragment.kt} | 86 ++++++++----------- .../view/ui/details/AppDetailsFragment.kt | 2 +- .../view/ui/details/DevProfileFragment.kt | 2 +- .../main/res/navigation/mobile_navigation.xml | 14 +++ 9 files changed, 62 insertions(+), 66 deletions(-) rename app/src/main/java/com/aurora/store/view/ui/commons/{StreamBrowseActivity.kt => StreamBrowseFragment.kt} (64%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b1e8eebea..7be6ba549 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -94,7 +94,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 19e0bad7e..97b892ff4 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,16 +19,12 @@ package com.aurora.store.view.ui.commons -import android.content.Intent import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController -import com.aurora.Constants -import com.aurora.extensions.getEmptyActivityBundle import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Category import com.aurora.store.MobileNavigationDirections -import com.aurora.store.view.ui.details.DevProfileFragment import com.google.gson.Gson import com.google.gson.GsonBuilder import java.lang.reflect.Modifier @@ -58,7 +54,7 @@ open class BaseFragment : Fragment { ) } - fun openStreamBrowseActivity(browseUrl: String, title: String = "") { + fun openStreamBrowseFragment(browseUrl: String, title: String = "") { if (browseUrl.lowercase().contains("expanded")) { findNavController().navigate( MobileNavigationDirections.actionGlobalExpandedStreamBrowseFragment( @@ -74,10 +70,12 @@ open class BaseFragment : Fragment { ) ) } else { - val intent = Intent(requireContext(), StreamBrowseActivity::class.java) - intent.putExtra(Constants.BROWSE_EXTRA, browseUrl) - intent.putExtra(Constants.STRING_EXTRA, title) - startActivity(intent, requireContext().getEmptyActivityBundle()) + findNavController().navigate( + MobileNavigationDirections.actionGlobalStreamBrowseFragment( + browseUrl, + title + ) + ) } } diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt index 44900e9aa..e96af5393 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt @@ -116,7 +116,7 @@ class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler), override fun onHeaderClicked(streamCluster: StreamCluster) { if (streamCluster.clusterBrowseUrl.isNotEmpty()) - openStreamBrowseActivity(streamCluster.clusterBrowseUrl) + openStreamBrowseFragment(streamCluster.clusterBrowseUrl) else Toast.makeText( requireContext(), diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/EarlyAccessFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/EarlyAccessFragment.kt index a85edad3b..1c7791ada 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/EarlyAccessFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/EarlyAccessFragment.kt @@ -122,7 +122,7 @@ class EarlyAccessFragment : BaseFragment(), GenericCarouselController.Callbacks override fun onHeaderClicked(streamCluster: StreamCluster) { if (streamCluster.clusterBrowseUrl.isNotEmpty()) - openStreamBrowseActivity(streamCluster.clusterBrowseUrl) + openStreamBrowseFragment(streamCluster.clusterBrowseUrl) } override fun onClusterScrolled(streamCluster: StreamCluster) { diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt index 9f16b73b1..d0672da7d 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt @@ -33,7 +33,6 @@ import com.aurora.store.data.ViewState import com.aurora.store.databinding.FragmentForYouBinding import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.epoxy.controller.GenericCarouselController -import com.aurora.store.view.ui.sheets.AppPeekDialogSheet import com.aurora.store.viewmodel.homestream.AppsForYouViewModel import com.aurora.store.viewmodel.homestream.BaseClusterViewModel import com.aurora.store.viewmodel.homestream.GamesForYouViewModel @@ -138,7 +137,7 @@ class ForYouFragment : BaseFragment(), GenericCarouselController.Callbacks { override fun onHeaderClicked(streamCluster: StreamCluster) { if (streamCluster.clusterBrowseUrl.isNotEmpty()) - openStreamBrowseActivity(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) + openStreamBrowseFragment(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) } override fun onClusterScrolled(streamCluster: StreamCluster) { diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseActivity.kt b/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt similarity index 64% rename from app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt index 769698456..340bce838 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt @@ -20,9 +20,13 @@ package com.aurora.store.view.ui.commons import android.os.Bundle +import android.view.View import androidx.lifecycle.ViewModelProvider +import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs import com.aurora.Constants import com.aurora.gplayapi.data.models.StreamCluster +import com.aurora.store.R import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.epoxy.views.AppProgressViewModel_ @@ -31,9 +35,14 @@ import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_ import com.aurora.store.viewmodel.browse.StreamBrowseViewModel -class StreamBrowseActivity : BaseActivity() { +class StreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { + + private var _binding: ActivityGenericRecyclerBinding? = null + private val binding: ActivityGenericRecyclerBinding + get() = _binding!! + + private val args: StreamBrowseFragmentArgs by navArgs() - lateinit var B: ActivityGenericRecyclerBinding lateinit var VM: StreamBrowseViewModel lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener @@ -41,69 +50,46 @@ class StreamBrowseActivity : BaseActivity() { lateinit var title: String lateinit var cluster: StreamCluster - override fun onConnected() { - hideNetworkConnectivitySheet() - } - - override fun onDisconnected() { - showNetworkConnectivitySheet() - } - - override fun onReconnected() { - - } - - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - B = ActivityGenericRecyclerBinding.inflate(layoutInflater) + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + _binding = ActivityGenericRecyclerBinding.bind(view) VM = ViewModelProvider(this)[StreamBrowseViewModel::class.java] - setContentView(B.root) + // Toolbar + binding.layoutToolbarAction.apply { + txtTitle.text = args.title + imgActionPrimary.setOnClickListener { + findNavController().navigateUp() + } + } - attachToolbar() - - VM.liveData.observe(this) { - if (!::cluster.isInitialized) - attachRecycler() + VM.liveData.observe(viewLifecycleOwner) { + if (!::cluster.isInitialized) { + endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { + override fun onLoadMore(currentPage: Int) { + VM.nextCluster() + } + } + binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) + } cluster = it updateController(cluster) - updateTitle(cluster) - } - - intent.apply { - getStringExtra(Constants.BROWSE_EXTRA)?.let { - VM.getStreamBundle(it) - } + binding.layoutToolbarAction.txtTitle.text = it.clusterTitle } + VM.getStreamBundle(args.browseUrl) updateController(null) } - private fun updateTitle(streamCluster: StreamCluster) { - B.layoutToolbarAction.txtTitle.text = streamCluster.clusterTitle - } - - private fun attachToolbar() { - B.layoutToolbarAction.imgActionPrimary.setOnClickListener { - finishAfterTransition() - } - } - - private fun attachRecycler() { - endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { - override fun onLoadMore(currentPage: Int) { - VM.nextCluster() - } - } - B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) + override fun onDestroyView() { + super.onDestroyView() + _binding = null } private fun updateController(streamCluster: StreamCluster?) { - B.recycler.withModels { + binding.recycler.withModels { setFilterDuplicates(true) if (streamCluster == null) { for (i in 1..6) { diff --git a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt index 78ecd26f7..a9e9eff46 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt @@ -1126,7 +1126,7 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { DetailsCarouselController(object : GenericCarouselController.Callbacks { override fun onHeaderClicked(streamCluster: StreamCluster) { if (streamCluster.clusterBrowseUrl.isNotEmpty()) - openStreamBrowseActivity( + openStreamBrowseFragment( streamCluster.clusterBrowseUrl, streamCluster.clusterTitle ) diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt index 2c6b3aaab..d9628bf86 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt @@ -109,7 +109,7 @@ class DevProfileFragment : BaseFragment(R.layout.fragment_dev_profile), } override fun onHeaderClicked(streamCluster: StreamCluster) { - openStreamBrowseActivity(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) + openStreamBrowseFragment(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) } override fun onClusterScrolled(streamCluster: StreamCluster) { diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 4e6e7305a..02b93d488 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -168,6 +168,17 @@ app:action="android.intent.action.VIEW" app:uri="play.google.com/store/apps/dev?id={devId}" /> + + + + @@ -186,4 +197,7 @@ +