Skip to content

Commit

Permalink
feat: limit comment depth to 4
Browse files Browse the repository at this point in the history
  • Loading branch information
rebelonion committed Feb 25, 2024
1 parent 526098f commit a251dd4
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
22 changes: 21 additions & 1 deletion app/src/main/java/ani/dantotsu/media/comments/CommentItem.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class CommentItem(val comment: Comment,
) : BindableItem<ItemCommentsBinding>() {
var binding: ItemCommentsBinding? = null
val adapter = GroupieAdapter()
private var subCommentIds: MutableList<Int> = mutableListOf()
val repliesSection = Section()
var isEditing = false
private var isReplying = false
Expand Down Expand Up @@ -77,6 +78,7 @@ class CommentItem(val comment: Comment,
viewBinding.commentTotalReplies.setOnClickListener {
if (repliesVisible) {
repliesSection.clear()
removeSubCommentIds()
viewBinding.commentTotalReplies.text = "View ${comment.replyCount} repl${if (comment.replyCount == 1) "y" else "ies"}"
repliesVisible = false
} else {
Expand Down Expand Up @@ -168,7 +170,7 @@ class CommentItem(val comment: Comment,
viewBinding.commentUserAvatar
comment.profilePictureUrl?.let { viewBinding.commentUserAvatar.loadImage(it) }
viewBinding.commentUserName.text = comment.username
val levelColor = getAvatarColor(comment.upvotes - comment.downvotes, backgroundColor)
val levelColor = getAvatarColor(comment.totalVotes, backgroundColor)
viewBinding.commentUserName.setTextColor(levelColor.first)
viewBinding.commentUserLevel.text = "Lv. ${levelColor.second}"
viewBinding.commentUserLevel.setTextColor(levelColor.first)
Expand All @@ -193,9 +195,27 @@ class CommentItem(val comment: Comment,
binding?.commentEdit?.text = if (isEditing) currActivity()!!.getString(R.string.cancel) else currActivity()!!.getString(R.string.edit)
this.isEditing = isEditing
}

fun registerSubComment(id: Int) {
subCommentIds.add(id)
}

private fun removeSubCommentIds(){
subCommentIds.forEach { id ->
val parentComments = parentSection.groups as? List<CommentItem> ?: emptyList()
val commentToRemove = parentComments.find { it.comment.commentId == id }
commentToRemove?.let {
it.removeSubCommentIds()
parentSection.remove(it)
}
}
subCommentIds.clear()
}

fun test(isEditing: Boolean){
this.isEditing = isEditing
}

private fun setVoteButtons(viewBinding: ItemCommentsBinding) {
when (comment.userVoteType) {
1 -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ class CommentsActivity : AppCompatActivity() {
}
}

//adds additional comments to the section
private suspend fun updateUIWithComment(comment: Comment) {
withContext(Dispatchers.Main) {
section.add(
Expand Down Expand Up @@ -220,6 +221,12 @@ class CommentsActivity : AppCompatActivity() {
NONE, EDIT, REPLY
}

/**
* Loads and displays the comments
* Called when the activity is created
* Or when the user refreshes the comments
*/

private suspend fun loadAndDisplayComments() {
binding.commentsProgressBar.visibility = View.VISIBLE
binding.commentsList.visibility = View.GONE
Expand Down Expand Up @@ -336,6 +343,11 @@ class CommentsActivity : AppCompatActivity() {
binding.commentReplyToContainer.visibility = View.GONE
}
}

/**
* Callback from the comment item to view the replies to the comment
* @param comment the comment to view the replies of
*/
fun viewReplyCallback(comment: CommentItem) {
lifecycleScope.launch {
val replies = withContext(Dispatchers.IO) {
Expand All @@ -345,7 +357,7 @@ class CommentsActivity : AppCompatActivity() {
replies?.comments?.forEach {
val depth = if (comment.commentDepth + 1 > comment.MAX_DEPTH) comment.commentDepth else comment.commentDepth + 1
val section = if (comment.commentDepth + 1 > comment.MAX_DEPTH) comment.parentSection else comment.repliesSection

if (depth >= comment.MAX_DEPTH) comment.registerSubComment(it.commentId)
val newCommentItem = CommentItem(
it,
buildMarkwon(),
Expand Down Expand Up @@ -439,6 +451,11 @@ class CommentsActivity : AppCompatActivity() {
item.notifyChanged()
}

/**
* Handles the new user-added comment
* @param commentText the text of the comment
*/

private suspend fun handleNewComment(commentText: String) {
val success = withContext(Dispatchers.IO) {
CommentsAPI.comment(
Expand All @@ -452,6 +469,7 @@ class CommentsActivity : AppCompatActivity() {
if (commentWithInteraction == null) return@let
val section = if (commentWithInteraction!!.commentDepth + 1 > commentWithInteraction!!.MAX_DEPTH) commentWithInteraction?.parentSection else commentWithInteraction?.repliesSection
val depth = if (commentWithInteraction!!.commentDepth + 1 > commentWithInteraction!!.MAX_DEPTH) commentWithInteraction!!.commentDepth else commentWithInteraction!!.commentDepth + 1
if (depth >= commentWithInteraction!!.MAX_DEPTH) commentWithInteraction!!.registerSubComment(it.commentId)
section?.add(
if (commentWithInteraction!!.commentDepth + 1 > commentWithInteraction!!.MAX_DEPTH) 0 else section.itemCount,
CommentItem(
Expand Down

0 comments on commit a251dd4

Please sign in to comment.