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

@@ -98,7 +98,6 @@
<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" />
<activity android:name=".view.ui.details.DetailsExodusActivity" /> <activity android:name=".view.ui.details.DetailsExodusActivity" />
<activity android:name=".view.ui.details.DevAppsActivity" />
<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

@@ -27,7 +27,6 @@ import com.aurora.Constants
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.data.model.Report import com.aurora.store.data.model.Report
import com.aurora.store.view.ui.details.DetailsExodusActivity 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.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import java.lang.reflect.Modifier import java.lang.reflect.Modifier
@@ -35,17 +34,6 @@ import java.lang.reflect.Modifier
object NavigationUtil { object NavigationUtil {
val gson: Gson = GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).create() 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) { fun openExodusActivity(context: Context, app: App, report: Report) {
val intent = Intent( val intent = Intent(
context, context,

View File

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

View File

@@ -19,89 +19,67 @@
package com.aurora.store.view.ui.details package com.aurora.store.view.ui.details
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants import androidx.navigation.fragment.findNavController
import com.aurora.gplayapi.data.models.App import androidx.navigation.fragment.navArgs
import com.aurora.gplayapi.data.models.SearchBundle import com.aurora.gplayapi.data.models.SearchBundle
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.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ 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 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 VM: SearchResultViewModel
private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
private lateinit var app: App
var searchBundle: SearchBundle = SearchBundle() override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
override fun onConnected() { _binding = ActivityGenericRecyclerBinding.bind(view)
hideNetworkConnectivitySheet()
}
override fun onDisconnected() {
showNetworkConnectivitySheet()
}
override fun onReconnected() {
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
B = ActivityGenericRecyclerBinding.inflate(layoutInflater)
VM = ViewModelProvider(this)[SearchResultViewModel::class.java] VM = ViewModelProvider(this)[SearchResultViewModel::class.java]
setContentView(B.root) VM.liveData.observe(viewLifecycleOwner) {
updateController(it)
VM.liveData.observe(this) {
searchBundle = it
updateController(searchBundle)
} }
attachRecycler() // Toolbar
binding.layoutToolbarAction.apply {
onNewIntent(intent) txtTitle.text = args.developerName
} toolbar.setOnClickListener {
findNavController().navigateUp()
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}")
} }
} }
}
private fun attachToolbar() { // Recycler View
B.layoutToolbarAction.toolbar.setOnClickListener {
finishAfterTransition()
}
B.layoutToolbarAction.txtTitle.text = app.developerName
}
private fun attachRecycler() {
endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
override fun onLoadMore(currentPage: Int) { 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) { private fun updateController(searchBundle: SearchBundle) {
B.recycler binding.recycler
.withModels { .withModels {
setFilterDuplicates(true) setFilterDuplicates(true)
searchBundle.appList.forEach { app -> searchBundle.appList.forEach { app ->

View File

@@ -108,6 +108,9 @@
<deepLink <deepLink
app:action="android.intent.action.VIEW" app:action="android.intent.action.VIEW"
app:uri="play.google.com/store/apps/details?id={packageName}" /> app:uri="play.google.com/store/apps/details?id={packageName}" />
<action
android:id="@+id/action_appDetailsFragment_to_devAppsFragment"
app:destination="@id/devAppsFragment" />
</fragment> </fragment>
<fragment <fragment
android:id="@+id/categoryBrowseFragment" android:id="@+id/categoryBrowseFragment"
@@ -179,6 +182,14 @@
android:name="title" android:name="title"
app:argType="string" /> app:argType="string" />
</fragment> </fragment>
<fragment
android:id="@+id/devAppsFragment"
android:name="com.aurora.store.view.ui.details.DevAppsFragment"
tools:layout="@layout/activity_generic_recycler" >
<argument
android:name="developerName"
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" />