Migrate StreamBrowseActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-05 20:04:48 +05:30
parent 86f6939097
commit 45a130a430
9 changed files with 62 additions and 66 deletions

View File

@@ -94,7 +94,6 @@
<nav-graph android:value="@navigation/mobile_navigation" />
</activity>
<activity android:name=".view.ui.commons.StreamBrowseActivity" />
<activity android:name=".view.ui.details.DetailsMoreActivity" />
<activity android:name=".view.ui.details.DetailsReviewActivity" />
<activity android:name=".view.ui.account.GoogleActivity" />

View File

@@ -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
)
)
}
}

View File

@@ -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(),

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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
)

View File

@@ -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) {

View File

@@ -168,6 +168,17 @@
app:action="android.intent.action.VIEW"
app:uri="play.google.com/store/apps/dev?id={devId}" />
</fragment>
<fragment
android:id="@+id/streamBrowseFragment"
android:name="com.aurora.store.view.ui.commons.StreamBrowseFragment"
tools:layout="@layout/activity_generic_recycler" >
<argument
android:name="browseUrl"
app:argType="string" />
<argument
android:name="title"
app:argType="string" />
</fragment>
<action
android:id="@+id/action_global_appDetailsFragment"
app:destination="@id/appDetailsFragment" />
@@ -186,4 +197,7 @@
<action
android:id="@+id/action_global_devProfileFragment"
app:destination="@id/devProfileFragment" />
<action
android:id="@+id/action_global_streamBrowseFragment"
app:destination="@id/streamBrowseFragment" />
</navigation>