DO NOT MERGE: Migrate ExpandedStreamBrowseActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-05 12:35:20 +05:30
parent 953cea01c5
commit a654896ba4
5 changed files with 67 additions and 57 deletions

View File

@@ -114,7 +114,6 @@
<activity android:name=".view.ui.account.GoogleActivity" /> <activity android:name=".view.ui.account.GoogleActivity" />
<activity android:name=".view.ui.details.DetailsExodusActivity" /> <activity android:name=".view.ui.details.DetailsExodusActivity" />
<activity android:name=".view.ui.details.DevAppsActivity" /> <activity android:name=".view.ui.details.DevAppsActivity" />
<activity android:name=".view.ui.commons.ExpandedStreamBrowseActivity" />
<service android:name=".data.service.NotificationService" /> <service android:name=".data.service.NotificationService" />
<service android:name=".data.installer.InstallerService" /> <service android:name=".data.installer.InstallerService" />

View File

@@ -74,7 +74,7 @@ abstract class BaseActivity : AppCompatActivity(), NetworkProvider.NetworkListen
fun openStreamBrowseActivity(browseUrl: String, title: String = "") { fun openStreamBrowseActivity(browseUrl: String, title: String = "") {
val intent = if (browseUrl.lowercase().contains("expanded")) { val intent = if (browseUrl.lowercase().contains("expanded")) {
Intent(this, ExpandedStreamBrowseActivity::class.java) Intent(this, ExpandedStreamBrowseFragment::class.java)
} else if (browseUrl.lowercase().contains("developer")) { } else if (browseUrl.lowercase().contains("developer")) {
Intent(this, DevProfileActivity::class.java) Intent(this, DevProfileActivity::class.java)
} else { } else {

View File

@@ -59,16 +59,23 @@ open class BaseFragment : Fragment {
} }
fun openStreamBrowseActivity(browseUrl: String, title: String = "") { fun openStreamBrowseActivity(browseUrl: String, title: String = "") {
val intent = if (browseUrl.lowercase().contains("expanded")) if (browseUrl.lowercase().contains("expanded")) {
Intent(requireContext(), ExpandedStreamBrowseActivity::class.java) findNavController().navigate(
else if (browseUrl.lowercase().contains("developer")) MobileNavigationDirections.actionGlobalExpandedStreamBrowseFragment(
Intent(requireContext(), DevProfileActivity::class.java) title,
else browseUrl
Intent(requireContext(), StreamBrowseActivity::class.java) )
)
} else {
val intent = if (browseUrl.lowercase().contains("developer"))
Intent(requireContext(), DevProfileActivity::class.java)
else
Intent(requireContext(), StreamBrowseActivity::class.java)
intent.putExtra(Constants.BROWSE_EXTRA, browseUrl) intent.putExtra(Constants.BROWSE_EXTRA, browseUrl)
intent.putExtra(Constants.STRING_EXTRA, title) intent.putExtra(Constants.STRING_EXTRA, title)
startActivity(intent, requireContext().getEmptyActivityBundle()) startActivity(intent, requireContext().getEmptyActivityBundle())
}
} }
fun openEditorStreamBrowseActivity(browseUrl: String, title: String = "") { fun openEditorStreamBrowseActivity(browseUrl: String, title: String = "") {

View File

@@ -20,10 +20,14 @@
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.airbnb.epoxy.EpoxyModel import com.airbnb.epoxy.EpoxyModel
import com.aurora.Constants
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.store.MainActivity
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.groups.CarouselHorizontalModel_ import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_
@@ -35,69 +39,53 @@ import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
import com.aurora.store.viewmodel.browse.ExpandedStreamBrowseViewModel import com.aurora.store.viewmodel.browse.ExpandedStreamBrowseViewModel
class ExpandedStreamBrowseActivity : BaseActivity() { class ExpandedStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: ExpandedStreamBrowseFragmentArgs by navArgs()
lateinit var B: ActivityGenericRecyclerBinding
lateinit var VM: ExpandedStreamBrowseViewModel lateinit var VM: ExpandedStreamBrowseViewModel
lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
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)[ExpandedStreamBrowseViewModel::class.java] VM = ViewModelProvider(this)[ExpandedStreamBrowseViewModel::class.java]
setContentView(B.root) // Toolbar
binding.layoutToolbarAction.apply {
attachToolbar() txtTitle.text = args.title
imgActionPrimary.setOnClickListener {
VM.liveData.observe(this) { findNavController().navigateUp()
if (!::cluster.isInitialized) }
attachRecycler() }
VM.liveData.observe(viewLifecycleOwner) {
if (!::cluster.isInitialized) attachRecycler()
cluster = it cluster = it
updateController(cluster) updateController(cluster)
updateTitle(cluster) updateTitle(cluster)
} }
intent.apply { VM.getInitialCluster(args.expandedStreamUrl)
getStringExtra(Constants.BROWSE_EXTRA)?.let {
VM.getInitialCluster(it)
}
getStringExtra(Constants.STRING_EXTRA)?.let {
B.layoutToolbarAction.txtTitle.text = it
}
}
updateController(null) updateController(null)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateTitle(streamCluster: StreamCluster) { private fun updateTitle(streamCluster: StreamCluster) {
if (streamCluster.clusterTitle.isNotEmpty()) if (streamCluster.clusterTitle.isNotEmpty())
B.layoutToolbarAction.txtTitle.text = streamCluster.clusterTitle binding.layoutToolbarAction.txtTitle.text = streamCluster.clusterTitle
}
private fun attachToolbar() {
B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
finishAfterTransition()
}
} }
private fun attachRecycler() { private fun attachRecycler() {
@@ -106,11 +94,11 @@ class ExpandedStreamBrowseActivity : BaseActivity() {
VM.next() VM.next()
} }
} }
B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) binding.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) {
@@ -131,7 +119,10 @@ class ExpandedStreamBrowseActivity : BaseActivity() {
.artwork(artwork) .artwork(artwork)
.callback(object : MiniScreenshotView.ScreenshotCallback { .callback(object : MiniScreenshotView.ScreenshotCallback {
override fun onClick(position: Int) { override fun onClick(position: Int) {
openScreenshotActivity(it, position) (activity as MainActivity).openScreenshotActivity(
it,
position
)
} }
}) })
) )

View File

@@ -130,6 +130,16 @@
android:name="browseUrl" android:name="browseUrl"
app:argType="string" /> app:argType="string" />
</fragment> </fragment>
<fragment
android:id="@+id/expandedStreamBrowseFragment"
android:name="com.aurora.store.view.ui.commons.ExpandedStreamBrowseFragment"
tools:layout="@layout/activity_generic_recycler" >
<argument android:name="title"
app:argType="string" />
<argument
android:name="expandedStreamUrl"
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" />
@@ -139,4 +149,7 @@
<action <action
android:id="@+id/action_global_editorStreamBrowseFragment" android:id="@+id/action_global_editorStreamBrowseFragment"
app:destination="@id/editorStreamBrowseFragment" /> app:destination="@id/editorStreamBrowseFragment" />
<action
android:id="@+id/action_global_expandedStreamBrowseFragment"
app:destination="@id/expandedStreamBrowseFragment" />
</navigation> </navigation>