Migrate DetailsReviewActivity to fragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -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"
|
||||||
@@ -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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user