diff --git a/app/src/main/java/com/github/libretube/api/obj/CommentsPage.kt b/app/src/main/java/com/github/libretube/api/obj/CommentsPage.kt index 3f8f83eec..043f9fbea 100644 --- a/app/src/main/java/com/github/libretube/api/obj/CommentsPage.kt +++ b/app/src/main/java/com/github/libretube/api/obj/CommentsPage.kt @@ -6,5 +6,6 @@ import kotlinx.serialization.Serializable data class CommentsPage( var comments: List = emptyList(), val disabled: Boolean = false, - val nextpage: String? = null + val nextpage: String? = null, + val commentCount: Long = 0 ) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/CommentsMainFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/CommentsMainFragment.kt index bb9a86334..e9588c8c8 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/CommentsMainFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/CommentsMainFragment.kt @@ -10,6 +10,7 @@ import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager import com.github.libretube.R import com.github.libretube.databinding.FragmentCommentsBinding +import com.github.libretube.extensions.formatShort import com.github.libretube.ui.adapters.CommentsAdapter import com.github.libretube.ui.models.CommentsViewModel import com.github.libretube.ui.sheets.CommentsSheet @@ -57,6 +58,10 @@ class CommentsMainFragment : Fragment() { viewModel.fetchNextComments() } } + (parentFragment as CommentsSheet).updateFragmentInfo( + false, + getString(R.string.comments) + ) commentsAdapter = CommentsAdapter( this, @@ -77,12 +82,16 @@ class CommentsMainFragment : Fragment() { // listen for new comments to be loaded viewModel.commentsPage.observe(viewLifecycleOwner) { - it ?: return@observe + if (it == null) return@observe binding.progress.visibility = View.GONE if (it.disabled) { binding.errorTV.visibility = View.VISIBLE return@observe } + (parentFragment as CommentsSheet).updateFragmentInfo( + false, + "${getString(R.string.comments)} (${it.commentCount.formatShort()})" + ) if (it.comments.isEmpty()) { binding.errorTV.text = getString(R.string.no_comments_available) binding.errorTV.visibility = View.VISIBLE diff --git a/app/src/main/java/com/github/libretube/ui/fragments/CommentsRepliesFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/CommentsRepliesFragment.kt index 05d965f81..ed9f1e56a 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/CommentsRepliesFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/CommentsRepliesFragment.kt @@ -10,16 +10,19 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager +import com.github.libretube.R import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.obj.Comment import com.github.libretube.api.obj.CommentsPage import com.github.libretube.constants.IntentData import com.github.libretube.databinding.FragmentCommentsBinding import com.github.libretube.extensions.TAG +import com.github.libretube.extensions.formatShort import com.github.libretube.extensions.parcelable import com.github.libretube.ui.adapters.CommentsAdapter import com.github.libretube.ui.extensions.filterNonEmptyComments import com.github.libretube.ui.models.CommentsViewModel +import com.github.libretube.ui.sheets.CommentsSheet import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -58,6 +61,10 @@ class CommentsRepliesFragment : Fragment() { ) { viewModel.commentsSheetDismiss?.invoke() } + (parentFragment as CommentsSheet).updateFragmentInfo( + true, + "${getString(R.string.replies)} (${comment.replyCount.formatShort()})" + ) binding.commentsRV.updatePadding(top = 0) binding.commentsRV.layoutManager = LinearLayoutManager(context) diff --git a/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt index bd53b35bf..01de833f4 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt @@ -9,11 +9,11 @@ import android.view.View import android.view.ViewGroup import android.view.ViewTreeObserver import android.view.WindowManager +import androidx.core.view.isVisible import androidx.fragment.app.activityViewModels import com.github.libretube.R import com.github.libretube.databinding.CommentsSheetBinding import com.github.libretube.ui.fragments.CommentsMainFragment -import com.github.libretube.ui.fragments.CommentsRepliesFragment import com.github.libretube.ui.models.CommentsViewModel class CommentsSheet : ExpandedBottomSheet() { @@ -58,11 +58,8 @@ class CommentsSheet : ExpandedBottomSheet() { } childFragmentManager.apply { - addOnBackStackChangedListener(this@CommentsSheet::onFragmentChanged) - beginTransaction() .replace(R.id.commentFragContainer, CommentsMainFragment()) - .runOnCommit(this@CommentsSheet::onFragmentChanged) .commit() } @@ -76,20 +73,9 @@ class CommentsSheet : ExpandedBottomSheet() { } } - private fun onFragmentChanged() { - childFragmentManager.findFragmentById(R.id.commentFragContainer)?.let { - when (it) { - is CommentsRepliesFragment -> { - binding.btnBack.visibility = View.VISIBLE - binding.commentsTitle.text = getString(R.string.replies) - } - - else -> { - binding.btnBack.visibility = View.GONE - binding.commentsTitle.text = getString(R.string.comments) - } - } - } + fun updateFragmentInfo(showBackButton: Boolean, title: String) { + binding.btnBack.isVisible = showBackButton + binding.commentsTitle.text = title } override fun onDismiss(dialog: DialogInterface) {