Migrate DevAppsActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-05 22:38:55 +05:30
parent 45a130a430
commit 18b328240f
5 changed files with 47 additions and 71 deletions

View File

@@ -27,7 +27,6 @@ import com.aurora.Constants
import com.aurora.gplayapi.data.models.App
import com.aurora.store.data.model.Report
import com.aurora.store.view.ui.details.DetailsExodusActivity
import com.aurora.store.view.ui.details.DevAppsActivity
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import java.lang.reflect.Modifier
@@ -35,17 +34,6 @@ import java.lang.reflect.Modifier
object NavigationUtil {
val gson: Gson = GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create()
fun openDevAppsActivity(context: Context, app: App) {
val intent = Intent(
context,
DevAppsActivity::class.java
).apply {
putExtra(Constants.STRING_APP, gson.toJson(app))
}
val options = ActivityOptions.makeSceneTransitionAnimation(context as AppCompatActivity)
context.startActivity(intent, options.toBundle())
}
fun openExodusActivity(context: Context, app: App, report: Report) {
val intent = Intent(
context,

View File

@@ -460,9 +460,9 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
txtLine1.text = app.displayName
txtLine2.text = app.developerName
txtLine2.setOnClickListener {
NavigationUtil.openDevAppsActivity(
requireContext(),
app
findNavController().navigate(
AppDetailsFragmentDirections
.actionAppDetailsFragmentToDevAppsFragment(app.developerName)
)
}
txtLine3.text = ("${app.versionName} (${app.versionCode})")

View File

@@ -19,89 +19,67 @@
package com.aurora.store.view.ui.details
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants
import com.aurora.gplayapi.data.models.App
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.aurora.gplayapi.data.models.SearchBundle
import com.aurora.store.R
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
import com.aurora.store.view.ui.commons.BaseActivity
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.viewmodel.search.SearchResultViewModel
class DevAppsActivity : BaseActivity() {
class DevAppsFragment : BaseFragment(R.layout.activity_generic_recycler) {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: DevAppsFragmentArgs by navArgs()
private lateinit var B: ActivityGenericRecyclerBinding
private lateinit var VM: SearchResultViewModel
private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
private lateinit var app: App
var searchBundle: SearchBundle = SearchBundle()
override fun onConnected() {
hideNetworkConnectivitySheet()
}
override fun onDisconnected() {
showNetworkConnectivitySheet()
}
override fun onReconnected() {
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
B = ActivityGenericRecyclerBinding.inflate(layoutInflater)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
VM = ViewModelProvider(this)[SearchResultViewModel::class.java]
setContentView(B.root)
VM.liveData.observe(this) {
searchBundle = it
updateController(searchBundle)
VM.liveData.observe(viewLifecycleOwner) {
updateController(it)
}
attachRecycler()
onNewIntent(intent)
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
intent?.let {
val rawApp: String? = intent.getStringExtra(Constants.STRING_APP)
app = gson.fromJson(rawApp, App::class.java)
app.let {
attachToolbar()
VM.observeSearchResults("pub:${app.developerName}")
// Toolbar
binding.layoutToolbarAction.apply {
txtTitle.text = args.developerName
toolbar.setOnClickListener {
findNavController().navigateUp()
}
}
}
private fun attachToolbar() {
B.layoutToolbarAction.toolbar.setOnClickListener {
finishAfterTransition()
}
B.layoutToolbarAction.txtTitle.text = app.developerName
}
private fun attachRecycler() {
// Recycler View
endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
override fun onLoadMore(currentPage: Int) {
VM.next(searchBundle.subBundles)
VM.liveData.value?.let { VM.next(it.subBundles) }
}
}
B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
VM.observeSearchResults("pub:${args.developerName}")
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(searchBundle: SearchBundle) {
B.recycler
binding.recycler
.withModels {
setFilterDuplicates(true)
searchBundle.appList.forEach { app ->