Migrate DetailsReviewActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-06 00:26:38 +05:30
parent 6509062ef7
commit 7fab0496b9
6 changed files with 64 additions and 78 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.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 openDetailsReviewActivity(app: App) {
val intent = Intent(this, DetailsReviewActivity::class.java)
intent.putExtra(Constants.STRING_EXTRA, gson.toJson(app))
val options = ActivityOptions.makeSceneTransitionAnimation(this)
startActivity(intent, options.toBundle())
}
fun askToReadTOS() { fun askToReadTOS() {
runOnUiThread { runOnUiThread {
if (!supportFragmentManager.isDestroyed) { if (!supportFragmentManager.isDestroyed) {

View File

@@ -988,7 +988,12 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
} }
B.headerRatingReviews.addClickListener { B.headerRatingReviews.addClickListener {
(activity as MainActivity).openDetailsReviewActivity(app) findNavController().navigate(
AppDetailsFragmentDirections.actionAppDetailsFragmentToDetailsReviewFragment(
app.displayName,
app.packageName
)
)
} }
task { task {

View File

@@ -20,52 +20,58 @@
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.fragment.app.Fragment
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.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.gplayapi.data.models.ReviewCluster import com.aurora.gplayapi.data.models.ReviewCluster
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.databinding.ActivityDetailsReviewBinding import com.aurora.store.databinding.FragmentDetailsReviewBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
import com.aurora.store.view.epoxy.views.details.ReviewViewModel_ import com.aurora.store.view.epoxy.views.details.ReviewViewModel_
import com.aurora.store.view.ui.commons.BaseActivity
import com.aurora.store.viewmodel.review.ReviewViewModel import com.aurora.store.viewmodel.review.ReviewViewModel
class DetailsReviewActivity : BaseActivity() { class DetailsReviewFragment : Fragment(R.layout.fragment_details_review) {
private var _binding: FragmentDetailsReviewBinding? = null
private val binding: FragmentDetailsReviewBinding
get() = _binding!!
private val args: DetailsReviewFragmentArgs by navArgs()
private lateinit var B: ActivityDetailsReviewBinding
private lateinit var VM: ReviewViewModel private lateinit var VM: ReviewViewModel
private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener private lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
private lateinit var app: App
private lateinit var filter: Review.Filter private lateinit var filter: Review.Filter
private lateinit var reviewCluster: ReviewCluster private lateinit var reviewCluster: ReviewCluster
override fun onConnected() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
} _binding = FragmentDetailsReviewBinding.bind(view)
override fun onDisconnected() {
}
override fun onReconnected() {
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
B = ActivityDetailsReviewBinding.inflate(layoutInflater)
VM = ViewModelProvider(this)[ReviewViewModel::class.java] VM = ViewModelProvider(this)[ReviewViewModel::class.java]
setContentView(B.root) // Toolbar
binding.layoutToolbarActionReview.apply {
txtTitle.text = args.displayName
toolbar.setOnClickListener {
findNavController().navigateUp()
}
}
VM.liveData.observe(this) { VM.liveData.observe(viewLifecycleOwner) {
if (!::reviewCluster.isInitialized) { if (!::reviewCluster.isInitialized) {
attachRecycler() endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
override fun onLoadMore(currentPage: Int) {
if (::reviewCluster.isInitialized) {
VM.next(reviewCluster.nextPageUrl)
}
}
}
binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
} }
it?.let { it?.let {
@@ -74,29 +80,12 @@ class DetailsReviewActivity : BaseActivity() {
} }
} }
attachChips() // Fetch Reviews
filter = Review.Filter.ALL
VM.fetchReview(args.packageName, filter)
val itemRaw: String? = intent.getStringExtra(Constants.STRING_EXTRA) // Chips
if (itemRaw != null) { binding.chipGroup.setOnCheckedStateChangeListener { _, checkedIds ->
app = gson.fromJson(itemRaw, App::class.java)
filter = Review.Filter.ALL
app.let {
attachToolbar()
fetchReviews()
}
}
}
private fun attachToolbar() {
B.layoutToolbarActionReview.toolbar.setOnClickListener {
finishAfterTransition()
}
B.layoutToolbarActionReview.txtTitle.text = app.displayName
}
private fun attachChips() {
B.chipGroup.setOnCheckedStateChangeListener { _, checkedIds ->
when (checkedIds[0]) { when (checkedIds[0]) {
R.id.filter_review_all -> filter = Review.Filter.ALL R.id.filter_review_all -> filter = Review.Filter.ALL
R.id.filter_review_critical -> filter = Review.Filter.CRITICAL R.id.filter_review_critical -> filter = Review.Filter.CRITICAL
@@ -108,24 +97,18 @@ class DetailsReviewActivity : BaseActivity() {
R.id.filter_review_one -> filter = Review.Filter.ONE R.id.filter_review_one -> filter = Review.Filter.ONE
} }
resetPage() endlessRecyclerOnScrollListener.resetPageCount()
fetchReviews() VM.fetchReview(args.packageName, filter)
} }
} }
private fun attachRecycler() { override fun onDestroyView() {
endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { super.onDestroyView()
override fun onLoadMore(currentPage: Int) { _binding = null
if (::reviewCluster.isInitialized) {
VM.next(reviewCluster.nextPageUrl)
}
}
}
B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
} }
private fun updateController(reviewCluster: ReviewCluster) { private fun updateController(reviewCluster: ReviewCluster) {
B.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)
reviewCluster.reviewList.forEach { reviewCluster.reviewList.forEach {
add( add(
@@ -135,7 +118,7 @@ class DetailsReviewActivity : BaseActivity() {
) )
} }
if (reviewCluster.hasNext()){ if (reviewCluster.hasNext()) {
add( add(
AppProgressViewModel_() AppProgressViewModel_()
.id("progress") .id("progress")
@@ -143,12 +126,4 @@ class DetailsReviewActivity : BaseActivity() {
} }
} }
} }
private fun fetchReviews() {
VM.fetchReview(app.packageName, filter)
}
private fun resetPage() {
endlessRecyclerOnScrollListener.resetPageCount()
}
} }

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.DetailsReviewFragment">
<include <include
android:id="@+id/layout_toolbar_action_review" android:id="@+id/layout_toolbar_action_review"

View File

@@ -114,6 +114,9 @@
<action <action
android:id="@+id/action_appDetailsFragment_to_detailsMoreFragment" android:id="@+id/action_appDetailsFragment_to_detailsMoreFragment"
app:destination="@id/detailsMoreFragment" /> app:destination="@id/detailsMoreFragment" />
<action
android:id="@+id/action_appDetailsFragment_to_detailsReviewFragment"
app:destination="@id/detailsReviewFragment" />
</fragment> </fragment>
<fragment <fragment
android:id="@+id/categoryBrowseFragment" android:id="@+id/categoryBrowseFragment"
@@ -202,6 +205,16 @@
android:name="app" android:name="app"
app:argType="com.aurora.gplayapi.data.models.App" /> app:argType="com.aurora.gplayapi.data.models.App" />
</fragment> </fragment>
<fragment
android:id="@+id/detailsReviewFragment"
android:name="com.aurora.store.view.ui.details.DetailsReviewFragment"
tools:layout="@layout/fragment_details_review" >
<argument
android:name="displayName"
app:argType="string" />
<argument android:name="packageName"
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" />