diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 19dd10f2d..4192be285 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -94,7 +94,6 @@ - diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt index 15860a06b..18b2de853 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt @@ -56,13 +56,6 @@ abstract class BaseActivity : AppCompatActivity(), NetworkProvider.NetworkListen 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() { runOnUiThread { if (!supportFragmentManager.isDestroyed) { 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 214f91dbc..693ec2117 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 @@ -988,7 +988,12 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { } B.headerRatingReviews.addClickListener { - (activity as MainActivity).openDetailsReviewActivity(app) + findNavController().navigate( + AppDetailsFragmentDirections.actionAppDetailsFragmentToDetailsReviewFragment( + app.displayName, + app.packageName + ) + ) } task { diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewActivity.kt b/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewFragment.kt similarity index 58% rename from app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewActivity.kt rename to app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewFragment.kt index a72c136fe..2665eca53 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewFragment.kt @@ -20,52 +20,58 @@ package com.aurora.store.view.ui.details import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment 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.Review import com.aurora.gplayapi.data.models.ReviewCluster 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.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.details.ReviewViewModel_ -import com.aurora.store.view.ui.commons.BaseActivity 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 endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener - private lateinit var app: App private lateinit var filter: Review.Filter private lateinit var reviewCluster: ReviewCluster - override fun onConnected() { - - } - - override fun onDisconnected() { - - } - - override fun onReconnected() { - - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - B = ActivityDetailsReviewBinding.inflate(layoutInflater) + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + _binding = FragmentDetailsReviewBinding.bind(view) 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) { - attachRecycler() + endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { + override fun onLoadMore(currentPage: Int) { + if (::reviewCluster.isInitialized) { + VM.next(reviewCluster.nextPageUrl) + } + } + } + binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) } 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) - if (itemRaw != null) { - 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 -> + // Chips + binding.chipGroup.setOnCheckedStateChangeListener { _, checkedIds -> when (checkedIds[0]) { R.id.filter_review_all -> filter = Review.Filter.ALL 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 } - resetPage() - fetchReviews() + endlessRecyclerOnScrollListener.resetPageCount() + VM.fetchReview(args.packageName, filter) } } - private fun attachRecycler() { - endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { - override fun onLoadMore(currentPage: Int) { - if (::reviewCluster.isInitialized) { - VM.next(reviewCluster.nextPageUrl) - } - } - } - B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) + override fun onDestroyView() { + super.onDestroyView() + _binding = null } private fun updateController(reviewCluster: ReviewCluster) { - B.recycler.withModels { + binding.recycler.withModels { setFilterDuplicates(true) reviewCluster.reviewList.forEach { add( @@ -135,7 +118,7 @@ class DetailsReviewActivity : BaseActivity() { ) } - if (reviewCluster.hasNext()){ + if (reviewCluster.hasNext()) { add( AppProgressViewModel_() .id("progress") @@ -143,12 +126,4 @@ class DetailsReviewActivity : BaseActivity() { } } } - - private fun fetchReviews() { - VM.fetchReview(app.packageName, filter) - } - - private fun resetPage() { - endlessRecyclerOnScrollListener.resetPageCount() - } } diff --git a/app/src/main/res/layout/activity_details_review.xml b/app/src/main/res/layout/fragment_details_review.xml similarity index 98% rename from app/src/main/res/layout/activity_details_review.xml rename to app/src/main/res/layout/fragment_details_review.xml index 194c5fcf9..e0b3eee06 100644 --- a/app/src/main/res/layout/activity_details_review.xml +++ b/app/src/main/res/layout/fragment_details_review.xml @@ -22,7 +22,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + tools:context=".view.ui.details.DetailsReviewFragment"> + + + + +