Migrate StreamBrowseActivity to fragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user