diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7be6ba549..7fe50d2d0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -98,7 +98,6 @@ - diff --git a/app/src/main/java/com/aurora/store/util/NavigationUtil.kt b/app/src/main/java/com/aurora/store/util/NavigationUtil.kt index 109c8aabd..7bb3ab7c9 100644 --- a/app/src/main/java/com/aurora/store/util/NavigationUtil.kt +++ b/app/src/main/java/com/aurora/store/util/NavigationUtil.kt @@ -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, diff --git a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt index a9e9eff46..dd5b96179 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt @@ -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})") diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DevAppsActivity.kt b/app/src/main/java/com/aurora/store/view/ui/details/DevAppsFragment.kt similarity index 59% rename from app/src/main/java/com/aurora/store/view/ui/details/DevAppsActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/details/DevAppsFragment.kt index 3c549cc7a..127819fe4 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DevAppsActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DevAppsFragment.kt @@ -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 -> diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 02b93d488..c8e50adea 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -108,6 +108,9 @@ + + + +