Migrate DetailsMoreActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-06 00:00:40 +05:30
parent 18b328240f
commit 6509062ef7
6 changed files with 48 additions and 53 deletions

View File

@@ -94,7 +94,6 @@
<nav-graph android:value="@navigation/mobile_navigation" /> <nav-graph android:value="@navigation/mobile_navigation" />
</activity> </activity>
<activity android:name=".view.ui.details.DetailsMoreActivity" />
<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" />

View File

@@ -56,13 +56,6 @@ abstract class BaseActivity : AppCompatActivity(), NetworkProvider.NetworkListen
startActivity(intent, options.toBundle()) startActivity(intent, options.toBundle())
} }
fun openDetailsMoreActivity(app: App) {
val intent = Intent(this, DetailsMoreActivity::class.java)
intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app))
val options = ActivityOptions.makeSceneTransitionAnimation(this)
startActivity(intent, options.toBundle())
}
fun openDetailsReviewActivity(app: App) { fun openDetailsReviewActivity(app: App) {
val intent = Intent(this, DetailsReviewActivity::class.java) val intent = Intent(this, DetailsReviewActivity::class.java)
intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app)) intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app))

View File

@@ -922,7 +922,9 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
} }
B.headerDescription.addClickListener { B.headerDescription.addClickListener {
(activity as MainActivity).openDetailsMoreActivity(app) findNavController().navigate(
AppDetailsFragmentDirections.actionAppDetailsFragmentToDetailsMoreFragment(app)
)
} }
B.epoxyRecycler.withModels { B.epoxyRecycler.withModels {

View File

@@ -20,76 +20,64 @@
package com.aurora.store.view.ui.details package com.aurora.store.view.ui.details
import android.os.Bundle import android.os.Bundle
import android.view.View
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import com.aurora.Constants import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.helpers.AppDetailsHelper import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.ActivityDetailsMoreBinding import com.aurora.store.databinding.FragmentDetailsMoreBinding
import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.HeaderViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppAltViewModel_ import com.aurora.store.view.epoxy.views.app.NoAppAltViewModel_
import com.aurora.store.view.epoxy.views.details.AppDependentViewModel_ import com.aurora.store.view.epoxy.views.details.AppDependentViewModel_
import com.aurora.store.view.epoxy.views.details.FileViewModel_ import com.aurora.store.view.epoxy.views.details.FileViewModel_
import com.aurora.store.view.epoxy.views.details.InfoViewModel_ import com.aurora.store.view.epoxy.views.details.InfoViewModel_
import com.aurora.store.view.epoxy.views.details.MoreBadgeViewModel_ import com.aurora.store.view.epoxy.views.details.MoreBadgeViewModel_
import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.commons.BaseFragment
import nl.komponents.kovenant.task import nl.komponents.kovenant.task
import nl.komponents.kovenant.ui.failUi import nl.komponents.kovenant.ui.failUi
import nl.komponents.kovenant.ui.successUi import nl.komponents.kovenant.ui.successUi
class DetailsMoreActivity : BaseActivity() { class DetailsMoreFragment : BaseFragment(R.layout.fragment_details_more) {
private lateinit var B: ActivityDetailsMoreBinding private var _binding: FragmentDetailsMoreBinding? = null
private lateinit var app: App private val binding: FragmentDetailsMoreBinding
get() = _binding!!
override fun onConnected() { private val args: DetailsMoreFragmentArgs by navArgs()
} override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentDetailsMoreBinding.bind(view)
override fun onDisconnected() { // Toolbar
binding.layoutToolbarActionMore.toolbar.setOnClickListener {
} findNavController().navigateUp()
override fun onReconnected() {
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
B = ActivityDetailsMoreBinding.inflate(layoutInflater)
setContentView(B.root)
attachToolbar()
val itemRaw: String? = intent.getStringExtra(Constants.STRING_EXTRA)
if (itemRaw != null) {
app = gson.fromJson(itemRaw, App::class.java)
app.let {
inflateDescription(app)
inflateFiles(app)
fetchDependentApps(app)
}
} }
inflateDescription(args.app)
inflateFiles(args.app)
fetchDependentApps(args.app)
} }
private fun attachToolbar() { override fun onDestroyView() {
B.layoutToolbarActionMore.toolbar.setOnClickListener { super.onDestroyView()
finishAfterTransition() _binding = null
}
} }
private fun inflateDescription(app: App) { private fun inflateDescription(app: App) {
B.layoutToolbarActionMore.txtTitle.text = app.displayName binding.layoutToolbarActionMore.txtTitle.text = app.displayName
B.txtDescription.text = HtmlCompat.fromHtml( binding.txtDescription.text = HtmlCompat.fromHtml(
app.description, app.description,
HtmlCompat.FROM_HTML_MODE_COMPACT HtmlCompat.FROM_HTML_MODE_COMPACT
) )
} }
private fun inflateFiles(app: App) { private fun inflateFiles(app: App) {
B.recyclerMore.withModels { binding.recyclerMore.withModels {
//Add dependent files //Add dependent files
if (app.fileList.isNotEmpty()) { if (app.fileList.isNotEmpty()) {
add( add(
@@ -136,13 +124,13 @@ class DetailsMoreActivity : BaseActivity() {
} }
} }
if (app.appInfo.appInfoMap.isNotEmpty()){ if (app.appInfo.appInfoMap.isNotEmpty()) {
add( add(
HeaderViewModel_() HeaderViewModel_()
.id("info_header") .id("info_header")
.title("Info") .title("Info")
) )
app.appInfo.appInfoMap.forEach{ app.appInfo.appInfoMap.forEach {
add( add(
InfoViewModel_() InfoViewModel_()
.id(it.key) .id(it.key)
@@ -155,13 +143,13 @@ class DetailsMoreActivity : BaseActivity() {
private fun fetchDependentApps(app: App) { private fun fetchDependentApps(app: App) {
val authData: AuthData = AuthProvider val authData: AuthData = AuthProvider
.with(this) .with(requireContext())
.getAuthData() .getAuthData()
task { task {
AppDetailsHelper(authData) AppDetailsHelper(authData)
.getAppByPackageName(app.dependencies.dependentPackages) .getAppByPackageName(app.dependencies.dependentPackages)
} successUi { } successUi {
B.recyclerDependency.withModels { binding.recyclerDependency.withModels {
if (it.isNotEmpty()) { if (it.isNotEmpty()) {
it.filter { it.displayName.isNotEmpty() }.forEach { it.filter { it.displayName.isNotEmpty() }.forEach {
add( add(
@@ -180,7 +168,7 @@ class DetailsMoreActivity : BaseActivity() {
} }
} }
} failUi { } failUi {
B.recyclerDependency.withModels { binding.recyclerDependency.withModels {
add( add(
NoAppAltViewModel_() NoAppAltViewModel_()
.id("no_app") .id("no_app")

View File

@@ -22,7 +22,8 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical"
tools:context=".view.ui.details.DetailsMoreFragment">
<include <include
android:id="@+id/layout_toolbar_action_more" android:id="@+id/layout_toolbar_action_more"

View File

@@ -111,6 +111,9 @@
<action <action
android:id="@+id/action_appDetailsFragment_to_devAppsFragment" android:id="@+id/action_appDetailsFragment_to_devAppsFragment"
app:destination="@id/devAppsFragment" /> app:destination="@id/devAppsFragment" />
<action
android:id="@+id/action_appDetailsFragment_to_detailsMoreFragment"
app:destination="@id/detailsMoreFragment" />
</fragment> </fragment>
<fragment <fragment
android:id="@+id/categoryBrowseFragment" android:id="@+id/categoryBrowseFragment"
@@ -190,6 +193,15 @@
android:name="developerName" android:name="developerName"
app:argType="string" /> app:argType="string" />
</fragment> </fragment>
<fragment
android:id="@+id/detailsMoreFragment"
android:name="com.aurora.store.view.ui.details.DetailsMoreFragment"
android:label="fragment_details_more"
tools:layout="@layout/fragment_details_more" >
<argument
android:name="app"
app:argType="com.aurora.gplayapi.data.models.App" />
</fragment>
<action <action
android:id="@+id/action_global_appDetailsFragment" android:id="@+id/action_global_appDetailsFragment"
app:destination="@id/appDetailsFragment" /> app:destination="@id/appDetailsFragment" />