From e7d896099712065953d9dda3f662624b1ac44f6b Mon Sep 17 00:00:00 2001 From: Rahul Patel Date: Sat, 13 Jul 2024 04:50:39 +0530 Subject: [PATCH] Fix ClusterStreamBrowse links - uses WebAPI --- .../store/view/ui/commons/BaseFragment.kt | 14 ++++---- .../view/ui/commons/CategoryBrowseFragment.kt | 2 +- .../store/view/ui/commons/ForYouFragment.kt | 2 +- .../view/ui/commons/StreamBrowseFragment.kt | 30 +++++++--------- .../viewmodel/browse/StreamBrowseViewModel.kt | 36 ++++++------------- .../main/res/navigation/mobile_navigation.xml | 7 ++-- 6 files changed, 34 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt index 9104bbe43..fdcff455b 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt @@ -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 : 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( diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt index d053ae94c..deb827db2 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt @@ -88,7 +88,7 @@ class CategoryBrowseFragment : BaseFragment() } override fun onHeaderClicked(streamCluster: StreamCluster) { - + openStreamBrowseFragment(streamCluster) } override fun onClusterScrolled(streamCluster: StreamCluster) { diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt index 316c91e14..92fe7cb5c 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt @@ -98,7 +98,7 @@ class ForYouFragment : BaseFragment(), } override fun onHeaderClicked(streamCluster: StreamCluster) { - + openStreamBrowseFragment(streamCluster) } override fun onClusterScrolled(streamCluster: StreamCluster) { diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt index a42ee51dc..ba10d4442 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt @@ -38,38 +38,32 @@ class StreamBrowseFragment : BaseFragment() { 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?) { diff --git a/app/src/main/java/com/aurora/store/viewmodel/browse/StreamBrowseViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/browse/StreamBrowseViewModel.kt index 786dab18b..8ab78f08b 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/browse/StreamBrowseViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/browse/StreamBrowseViewModel.kt @@ -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 = 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) { } diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 29974aa58..6b0386396 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -255,11 +255,8 @@ android:name="com.aurora.store.view.ui.commons.StreamBrowseFragment" tools:layout="@layout/fragment_generic_with_toolbar" > - + android:name="cluster" + app:argType="com.aurora.gplayapi.data.models.StreamCluster" />