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 63808e0ff..eed7a9dd5 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 @@ -7,11 +7,14 @@ import android.view.View import android.view.ViewGroup 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.databinding.BottomSheetBinding +import com.github.libretube.databinding.CommentsSheetBinding import com.github.libretube.extensions.TAG import com.github.libretube.ui.adapters.CommentsAdapter +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext class CommentsSheet( private val videoId: String, @@ -19,25 +22,25 @@ class CommentsSheet( private var nextPage: String?, private val onMoreComments: (comments: List, nextPage: String?) -> Unit ) : ExpandedBottomSheet() { - private lateinit var binding: BottomSheetBinding + private lateinit var binding: CommentsSheetBinding private lateinit var commentsAdapter: CommentsAdapter private var isLoading = false override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { - binding = BottomSheetBinding.inflate(layoutInflater) + binding = CommentsSheetBinding.inflate(layoutInflater) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - binding.optionsRecycler.layoutManager = LinearLayoutManager(requireContext()) - binding.optionsRecycler.setItemViewCacheSize(20) + binding.commentsRV.layoutManager = LinearLayoutManager(requireContext()) + binding.commentsRV.setItemViewCacheSize(20) - binding.optionsRecycler.viewTreeObserver + binding.commentsRV.viewTreeObserver .addOnScrollChangedListener { - if (!binding.optionsRecycler.canScrollVertically(1)) { + if (!binding.commentsRV.canScrollVertically(1)) { fetchNextComments() } } @@ -45,12 +48,13 @@ class CommentsSheet( commentsAdapter = CommentsAdapter(videoId, comments) { dialog?.dismiss() } - binding.optionsRecycler.adapter = commentsAdapter + binding.commentsRV.adapter = commentsAdapter if (comments.isEmpty()) fetchComments() } private fun fetchComments() { + binding.progress.visibility = View.VISIBLE lifecycleScope.launchWhenCreated { isLoading = true val response = try { @@ -59,6 +63,20 @@ class CommentsSheet( Log.e(TAG(), e.toString()) return@launchWhenCreated } + if (response.disabled == true) { + withContext(Dispatchers.Main) { + binding.errorTV.visibility = View.VISIBLE + } + return@launchWhenCreated + } + if (response.comments.isEmpty()) { + withContext(Dispatchers.Main) { + binding.errorTV.text = getString(R.string.no_comments_available) + binding.errorTV.visibility = View.VISIBLE + } + return@launchWhenCreated + } + binding.progress.visibility = View.GONE commentsAdapter.updateItems(response.comments) nextPage = response.nextpage onMoreComments.invoke(response.comments, response.nextpage) diff --git a/app/src/main/res/layout/comments_sheet.xml b/app/src/main/res/layout/comments_sheet.xml new file mode 100644 index 000000000..6beb68f0c --- /dev/null +++ b/app/src/main/res/layout/comments_sheet.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8f26d0f3f..3d6df189f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -396,6 +396,8 @@ Use swipe gesture to adjust the brightness and volume. Defaults Pop-Up + Comments are disabled by the author. + This video has no comments available. Download Service