mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 16:30:31 +05:30
Show the comment and reply count in the comments sheet
This commit is contained in:
parent
fb1ff597be
commit
119019825f
@ -6,5 +6,6 @@ import kotlinx.serialization.Serializable
|
|||||||
data class CommentsPage(
|
data class CommentsPage(
|
||||||
var comments: List<Comment> = emptyList(),
|
var comments: List<Comment> = emptyList(),
|
||||||
val disabled: Boolean = false,
|
val disabled: Boolean = false,
|
||||||
val nextpage: String? = null
|
val nextpage: String? = null,
|
||||||
|
val commentCount: Long = 0
|
||||||
)
|
)
|
||||||
|
@ -10,6 +10,7 @@ import androidx.fragment.app.activityViewModels
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.FragmentCommentsBinding
|
import com.github.libretube.databinding.FragmentCommentsBinding
|
||||||
|
import com.github.libretube.extensions.formatShort
|
||||||
import com.github.libretube.ui.adapters.CommentsAdapter
|
import com.github.libretube.ui.adapters.CommentsAdapter
|
||||||
import com.github.libretube.ui.models.CommentsViewModel
|
import com.github.libretube.ui.models.CommentsViewModel
|
||||||
import com.github.libretube.ui.sheets.CommentsSheet
|
import com.github.libretube.ui.sheets.CommentsSheet
|
||||||
@ -57,6 +58,10 @@ class CommentsMainFragment : Fragment() {
|
|||||||
viewModel.fetchNextComments()
|
viewModel.fetchNextComments()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
(parentFragment as CommentsSheet).updateFragmentInfo(
|
||||||
|
false,
|
||||||
|
getString(R.string.comments)
|
||||||
|
)
|
||||||
|
|
||||||
commentsAdapter = CommentsAdapter(
|
commentsAdapter = CommentsAdapter(
|
||||||
this,
|
this,
|
||||||
@ -77,12 +82,16 @@ class CommentsMainFragment : Fragment() {
|
|||||||
|
|
||||||
// listen for new comments to be loaded
|
// listen for new comments to be loaded
|
||||||
viewModel.commentsPage.observe(viewLifecycleOwner) {
|
viewModel.commentsPage.observe(viewLifecycleOwner) {
|
||||||
it ?: return@observe
|
if (it == null) return@observe
|
||||||
binding.progress.visibility = View.GONE
|
binding.progress.visibility = View.GONE
|
||||||
if (it.disabled) {
|
if (it.disabled) {
|
||||||
binding.errorTV.visibility = View.VISIBLE
|
binding.errorTV.visibility = View.VISIBLE
|
||||||
return@observe
|
return@observe
|
||||||
}
|
}
|
||||||
|
(parentFragment as CommentsSheet).updateFragmentInfo(
|
||||||
|
false,
|
||||||
|
"${getString(R.string.comments)} (${it.commentCount.formatShort()})"
|
||||||
|
)
|
||||||
if (it.comments.isEmpty()) {
|
if (it.comments.isEmpty()) {
|
||||||
binding.errorTV.text = getString(R.string.no_comments_available)
|
binding.errorTV.text = getString(R.string.no_comments_available)
|
||||||
binding.errorTV.visibility = View.VISIBLE
|
binding.errorTV.visibility = View.VISIBLE
|
||||||
|
@ -10,16 +10,19 @@ import androidx.fragment.app.Fragment
|
|||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import com.github.libretube.R
|
||||||
import com.github.libretube.api.RetrofitInstance
|
import com.github.libretube.api.RetrofitInstance
|
||||||
import com.github.libretube.api.obj.Comment
|
import com.github.libretube.api.obj.Comment
|
||||||
import com.github.libretube.api.obj.CommentsPage
|
import com.github.libretube.api.obj.CommentsPage
|
||||||
import com.github.libretube.constants.IntentData
|
import com.github.libretube.constants.IntentData
|
||||||
import com.github.libretube.databinding.FragmentCommentsBinding
|
import com.github.libretube.databinding.FragmentCommentsBinding
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
|
import com.github.libretube.extensions.formatShort
|
||||||
import com.github.libretube.extensions.parcelable
|
import com.github.libretube.extensions.parcelable
|
||||||
import com.github.libretube.ui.adapters.CommentsAdapter
|
import com.github.libretube.ui.adapters.CommentsAdapter
|
||||||
import com.github.libretube.ui.extensions.filterNonEmptyComments
|
import com.github.libretube.ui.extensions.filterNonEmptyComments
|
||||||
import com.github.libretube.ui.models.CommentsViewModel
|
import com.github.libretube.ui.models.CommentsViewModel
|
||||||
|
import com.github.libretube.ui.sheets.CommentsSheet
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
@ -58,6 +61,10 @@ class CommentsRepliesFragment : Fragment() {
|
|||||||
) {
|
) {
|
||||||
viewModel.commentsSheetDismiss?.invoke()
|
viewModel.commentsSheetDismiss?.invoke()
|
||||||
}
|
}
|
||||||
|
(parentFragment as CommentsSheet).updateFragmentInfo(
|
||||||
|
true,
|
||||||
|
"${getString(R.string.replies)} (${comment.replyCount.formatShort()})"
|
||||||
|
)
|
||||||
|
|
||||||
binding.commentsRV.updatePadding(top = 0)
|
binding.commentsRV.updatePadding(top = 0)
|
||||||
binding.commentsRV.layoutManager = LinearLayoutManager(context)
|
binding.commentsRV.layoutManager = LinearLayoutManager(context)
|
||||||
|
@ -9,11 +9,11 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.ViewTreeObserver
|
import android.view.ViewTreeObserver
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.CommentsSheetBinding
|
import com.github.libretube.databinding.CommentsSheetBinding
|
||||||
import com.github.libretube.ui.fragments.CommentsMainFragment
|
import com.github.libretube.ui.fragments.CommentsMainFragment
|
||||||
import com.github.libretube.ui.fragments.CommentsRepliesFragment
|
|
||||||
import com.github.libretube.ui.models.CommentsViewModel
|
import com.github.libretube.ui.models.CommentsViewModel
|
||||||
|
|
||||||
class CommentsSheet : ExpandedBottomSheet() {
|
class CommentsSheet : ExpandedBottomSheet() {
|
||||||
@ -58,11 +58,8 @@ class CommentsSheet : ExpandedBottomSheet() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
childFragmentManager.apply {
|
childFragmentManager.apply {
|
||||||
addOnBackStackChangedListener(this@CommentsSheet::onFragmentChanged)
|
|
||||||
|
|
||||||
beginTransaction()
|
beginTransaction()
|
||||||
.replace(R.id.commentFragContainer, CommentsMainFragment())
|
.replace(R.id.commentFragContainer, CommentsMainFragment())
|
||||||
.runOnCommit(this@CommentsSheet::onFragmentChanged)
|
|
||||||
.commit()
|
.commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,20 +73,9 @@ class CommentsSheet : ExpandedBottomSheet() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onFragmentChanged() {
|
fun updateFragmentInfo(showBackButton: Boolean, title: String) {
|
||||||
childFragmentManager.findFragmentById(R.id.commentFragContainer)?.let {
|
binding.btnBack.isVisible = showBackButton
|
||||||
when (it) {
|
binding.commentsTitle.text = title
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDismiss(dialog: DialogInterface) {
|
override fun onDismiss(dialog: DialogInterface) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user