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" /> <nav-graph android:value="@navigation/mobile_navigation" />
</activity> </activity>
<activity android:name=".view.ui.commons.StreamBrowseActivity" />
<activity android:name=".view.ui.details.DetailsMoreActivity" /> <activity android:name=".view.ui.details.DetailsMoreActivity" />
<activity android:name=".view.ui.details.DetailsReviewActivity" /> <activity android:name=".view.ui.details.DetailsReviewActivity" />
<activity android:name=".view.ui.account.GoogleActivity" /> <activity android:name=".view.ui.account.GoogleActivity" />

View File

@@ -19,16 +19,12 @@
package com.aurora.store.view.ui.commons package com.aurora.store.view.ui.commons
import android.content.Intent
import androidx.annotation.LayoutRes import androidx.annotation.LayoutRes
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController 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.App
import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.Category
import com.aurora.store.MobileNavigationDirections import com.aurora.store.MobileNavigationDirections
import com.aurora.store.view.ui.details.DevProfileFragment
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import java.lang.reflect.Modifier 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")) { if (browseUrl.lowercase().contains("expanded")) {
findNavController().navigate( findNavController().navigate(
MobileNavigationDirections.actionGlobalExpandedStreamBrowseFragment( MobileNavigationDirections.actionGlobalExpandedStreamBrowseFragment(
@@ -74,10 +70,12 @@ open class BaseFragment : Fragment {
) )
) )
} else { } else {
val intent = Intent(requireContext(), StreamBrowseActivity::class.java) findNavController().navigate(
intent.putExtra(Constants.BROWSE_EXTRA, browseUrl) MobileNavigationDirections.actionGlobalStreamBrowseFragment(
intent.putExtra(Constants.STRING_EXTRA, title) browseUrl,
startActivity(intent, requireContext().getEmptyActivityBundle()) title
)
)
} }
} }

View File

@@ -116,7 +116,7 @@ class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler),
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
if (streamCluster.clusterBrowseUrl.isNotEmpty()) if (streamCluster.clusterBrowseUrl.isNotEmpty())
openStreamBrowseActivity(streamCluster.clusterBrowseUrl) openStreamBrowseFragment(streamCluster.clusterBrowseUrl)
else else
Toast.makeText( Toast.makeText(
requireContext(), requireContext(),

View File

@@ -122,7 +122,7 @@ class EarlyAccessFragment : BaseFragment(), GenericCarouselController.Callbacks
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
if (streamCluster.clusterBrowseUrl.isNotEmpty()) if (streamCluster.clusterBrowseUrl.isNotEmpty())
openStreamBrowseActivity(streamCluster.clusterBrowseUrl) openStreamBrowseFragment(streamCluster.clusterBrowseUrl)
} }
override fun onClusterScrolled(streamCluster: StreamCluster) { 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.databinding.FragmentForYouBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.controller.GenericCarouselController 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.AppsForYouViewModel
import com.aurora.store.viewmodel.homestream.BaseClusterViewModel import com.aurora.store.viewmodel.homestream.BaseClusterViewModel
import com.aurora.store.viewmodel.homestream.GamesForYouViewModel import com.aurora.store.viewmodel.homestream.GamesForYouViewModel
@@ -138,7 +137,7 @@ class ForYouFragment : BaseFragment(), GenericCarouselController.Callbacks {
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
if (streamCluster.clusterBrowseUrl.isNotEmpty()) if (streamCluster.clusterBrowseUrl.isNotEmpty())
openStreamBrowseActivity(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) openStreamBrowseFragment(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle)
} }
override fun onClusterScrolled(streamCluster: StreamCluster) { override fun onClusterScrolled(streamCluster: StreamCluster) {

View File

@@ -20,9 +20,13 @@
package com.aurora.store.view.ui.commons package com.aurora.store.view.ui.commons
import android.os.Bundle import android.os.Bundle
import android.view.View
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.store.R
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ 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 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 VM: StreamBrowseViewModel
lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
@@ -41,69 +50,46 @@ class StreamBrowseActivity : BaseActivity() {
lateinit var title: String lateinit var title: String
lateinit var cluster: StreamCluster lateinit var cluster: StreamCluster
override fun onConnected() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
hideNetworkConnectivitySheet() super.onViewCreated(view, savedInstanceState)
} _binding = ActivityGenericRecyclerBinding.bind(view)
override fun onDisconnected() {
showNetworkConnectivitySheet()
}
override fun onReconnected() {
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
B = ActivityGenericRecyclerBinding.inflate(layoutInflater)
VM = ViewModelProvider(this)[StreamBrowseViewModel::class.java] 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(viewLifecycleOwner) {
if (!::cluster.isInitialized) {
VM.liveData.observe(this) { endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
if (!::cluster.isInitialized) override fun onLoadMore(currentPage: Int) {
attachRecycler() VM.nextCluster()
}
}
binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
}
cluster = it cluster = it
updateController(cluster) updateController(cluster)
updateTitle(cluster) binding.layoutToolbarAction.txtTitle.text = it.clusterTitle
}
intent.apply {
getStringExtra(Constants.BROWSE_EXTRA)?.let {
VM.getStreamBundle(it)
}
} }
VM.getStreamBundle(args.browseUrl)
updateController(null) updateController(null)
} }
private fun updateTitle(streamCluster: StreamCluster) { override fun onDestroyView() {
B.layoutToolbarAction.txtTitle.text = streamCluster.clusterTitle super.onDestroyView()
} _binding = null
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)
} }
private fun updateController(streamCluster: StreamCluster?) { private fun updateController(streamCluster: StreamCluster?) {
B.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)
if (streamCluster == null) { if (streamCluster == null) {
for (i in 1..6) { for (i in 1..6) {

View File

@@ -1126,7 +1126,7 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
DetailsCarouselController(object : GenericCarouselController.Callbacks { DetailsCarouselController(object : GenericCarouselController.Callbacks {
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
if (streamCluster.clusterBrowseUrl.isNotEmpty()) if (streamCluster.clusterBrowseUrl.isNotEmpty())
openStreamBrowseActivity( openStreamBrowseFragment(
streamCluster.clusterBrowseUrl, streamCluster.clusterBrowseUrl,
streamCluster.clusterTitle streamCluster.clusterTitle
) )

View File

@@ -109,7 +109,7 @@ class DevProfileFragment : BaseFragment(R.layout.fragment_dev_profile),
} }
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
openStreamBrowseActivity(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) openStreamBrowseFragment(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle)
} }
override fun onClusterScrolled(streamCluster: StreamCluster) { override fun onClusterScrolled(streamCluster: StreamCluster) {

View File

@@ -168,6 +168,17 @@
app:action="android.intent.action.VIEW" app:action="android.intent.action.VIEW"
app:uri="play.google.com/store/apps/dev?id={devId}" /> app:uri="play.google.com/store/apps/dev?id={devId}" />
</fragment> </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 <action
android:id="@+id/action_global_appDetailsFragment" android:id="@+id/action_global_appDetailsFragment"
app:destination="@id/appDetailsFragment" /> app:destination="@id/appDetailsFragment" />
@@ -186,4 +197,7 @@
<action <action
android:id="@+id/action_global_devProfileFragment" android:id="@+id/action_global_devProfileFragment"
app:destination="@id/devProfileFragment" /> app:destination="@id/devProfileFragment" />
<action
android:id="@+id/action_global_streamBrowseFragment"
app:destination="@id/streamBrowseFragment" />
</navigation> </navigation>