Fix ClusterStreamBrowse links - uses WebAPI
This commit is contained in:
@@ -28,6 +28,7 @@ import androidx.navigation.fragment.findNavController
|
||||
import androidx.viewbinding.ViewBinding
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.gplayapi.data.models.Category
|
||||
import com.aurora.gplayapi.data.models.StreamCluster
|
||||
import com.aurora.store.MobileNavigationDirections
|
||||
import com.google.gson.Gson
|
||||
import java.lang.reflect.ParameterizedType
|
||||
@@ -93,16 +94,15 @@ abstract class BaseFragment<ViewBindingType : ViewBinding> : Fragment() {
|
||||
title
|
||||
)
|
||||
)
|
||||
} else {
|
||||
findNavController().navigate(
|
||||
MobileNavigationDirections.actionGlobalStreamBrowseFragment(
|
||||
browseUrl,
|
||||
title
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun openStreamBrowseFragment(streamCluster: StreamCluster) {
|
||||
findNavController().navigate(
|
||||
MobileNavigationDirections.actionGlobalStreamBrowseFragment(streamCluster)
|
||||
)
|
||||
}
|
||||
|
||||
fun openScreenshotFragment(app: App, position: Int) {
|
||||
findNavController().navigate(
|
||||
MobileNavigationDirections.actionGlobalScreenshotFragment(
|
||||
|
||||
@@ -88,7 +88,7 @@ class CategoryBrowseFragment : BaseFragment<FragmentGenericWithToolbarBinding>()
|
||||
}
|
||||
|
||||
override fun onHeaderClicked(streamCluster: StreamCluster) {
|
||||
|
||||
openStreamBrowseFragment(streamCluster)
|
||||
}
|
||||
|
||||
override fun onClusterScrolled(streamCluster: StreamCluster) {
|
||||
|
||||
@@ -98,7 +98,7 @@ class ForYouFragment : BaseFragment<FragmentForYouBinding>(),
|
||||
}
|
||||
|
||||
override fun onHeaderClicked(streamCluster: StreamCluster) {
|
||||
|
||||
openStreamBrowseFragment(streamCluster)
|
||||
}
|
||||
|
||||
override fun onClusterScrolled(streamCluster: StreamCluster) {
|
||||
|
||||
@@ -38,38 +38,32 @@ class StreamBrowseFragment : BaseFragment<FragmentGenericWithToolbarBinding>() {
|
||||
private val args: StreamBrowseFragmentArgs by navArgs()
|
||||
private val viewModel: StreamBrowseViewModel by viewModels()
|
||||
|
||||
private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
|
||||
private lateinit var cluster: StreamCluster
|
||||
private lateinit var streamCluster: StreamCluster
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
streamCluster = args.cluster
|
||||
|
||||
// Toolbar
|
||||
binding.layoutToolbarAction.apply {
|
||||
txtTitle.text = args.title
|
||||
txtTitle.text = streamCluster.clusterTitle
|
||||
imgActionPrimary.setOnClickListener {
|
||||
findNavController().navigateUp()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.liveData.observe(viewLifecycleOwner) {
|
||||
if (!::cluster.isInitialized) {
|
||||
endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
|
||||
override fun onLoadMore(currentPage: Int) {
|
||||
viewModel.nextCluster()
|
||||
}
|
||||
}
|
||||
binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
|
||||
binding.recycler.addOnScrollListener(object :
|
||||
EndlessRecyclerOnScrollListener(visibleThreshold = 4) {
|
||||
override fun onLoadMore(currentPage: Int) {
|
||||
viewModel.nextCluster()
|
||||
}
|
||||
})
|
||||
|
||||
cluster = it
|
||||
|
||||
updateController(cluster)
|
||||
binding.layoutToolbarAction.txtTitle.text = it.clusterTitle
|
||||
viewModel.initCluster(streamCluster)
|
||||
viewModel.liveData.observe(viewLifecycleOwner) {
|
||||
updateController(streamCluster)
|
||||
}
|
||||
|
||||
viewModel.getStreamBundle(args.browseUrl)
|
||||
updateController(null)
|
||||
}
|
||||
|
||||
private fun updateController(streamCluster: StreamCluster?) {
|
||||
|
||||
@@ -25,7 +25,8 @@ import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.aurora.gplayapi.data.models.StreamCluster
|
||||
import com.aurora.gplayapi.helpers.StreamHelper
|
||||
import com.aurora.gplayapi.helpers.contracts.StreamContract
|
||||
import com.aurora.gplayapi.helpers.web.WebStreamHelper
|
||||
import com.aurora.store.data.network.HttpClient
|
||||
import com.aurora.store.data.providers.AuthProvider
|
||||
import com.aurora.store.util.Log
|
||||
@@ -43,31 +44,16 @@ class StreamBrowseViewModel @Inject constructor(
|
||||
private val authProvider: AuthProvider
|
||||
) : ViewModel() {
|
||||
|
||||
private val streamHelper: StreamHelper = StreamHelper(authProvider.authData)
|
||||
private val streamHelper: StreamContract = WebStreamHelper()
|
||||
.using(HttpClient.getPreferredClient(context))
|
||||
|
||||
val liveData: MutableLiveData<StreamCluster> = MutableLiveData()
|
||||
var streamCluster: StreamCluster = StreamCluster()
|
||||
|
||||
fun getStreamBundle(browseUrl: String) {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
liveData.postValue(getInitialCluster(browseUrl))
|
||||
}
|
||||
}
|
||||
private lateinit var streamCluster: StreamCluster
|
||||
|
||||
private fun getInitialCluster(browseUrl: String): StreamCluster {
|
||||
val browseResponse = streamHelper.getBrowseStreamResponse(browseUrl)
|
||||
|
||||
if (browseResponse.contentsUrl.isNotEmpty())
|
||||
streamCluster = streamHelper.getNextStreamCluster(browseResponse.contentsUrl)
|
||||
else if (browseResponse.hasBrowseTab())
|
||||
streamCluster = streamHelper.getNextStreamCluster(browseResponse.browseTab.listUrl)
|
||||
|
||||
streamCluster.apply {
|
||||
clusterTitle = browseResponse.title
|
||||
}
|
||||
|
||||
return streamCluster
|
||||
fun initCluster(cluster: StreamCluster) {
|
||||
streamCluster = cluster
|
||||
liveData.postValue(streamCluster)
|
||||
}
|
||||
|
||||
fun nextCluster() {
|
||||
@@ -75,18 +61,18 @@ class StreamBrowseViewModel @Inject constructor(
|
||||
supervisorScope {
|
||||
try {
|
||||
if (streamCluster.hasNext()) {
|
||||
val newCluster = streamHelper.getNextStreamCluster(
|
||||
val nextCluster = streamHelper.nextStreamCluster(
|
||||
streamCluster.clusterNextPageUrl
|
||||
)
|
||||
|
||||
streamCluster.apply {
|
||||
clusterAppList.addAll(newCluster.clusterAppList)
|
||||
clusterNextPageUrl = newCluster.clusterNextPageUrl
|
||||
clusterAppList.addAll(nextCluster.clusterAppList)
|
||||
clusterNextPageUrl = nextCluster.clusterNextPageUrl
|
||||
}
|
||||
|
||||
liveData.postValue(streamCluster)
|
||||
} else {
|
||||
Log.i("End of Bundle")
|
||||
Log.i("End of Cluster")
|
||||
}
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
@@ -255,11 +255,8 @@
|
||||
android:name="com.aurora.store.view.ui.commons.StreamBrowseFragment"
|
||||
tools:layout="@layout/fragment_generic_with_toolbar" >
|
||||
<argument
|
||||
android:name="browseUrl"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="title"
|
||||
app:argType="string" />
|
||||
android:name="cluster"
|
||||
app:argType="com.aurora.gplayapi.data.models.StreamCluster" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/devAppsFragment"
|
||||
|
||||
Reference in New Issue
Block a user