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