From d84f185bf58ee30f1a7a7e63eb189d1260799c63 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Thu, 3 Feb 2022 16:42:39 -0500 Subject: [PATCH] Dont resort comments (#77) * Adding user and community blocking. Fixes #71 Fixes #58 * Don't resort comments in posts. Fixes #76 --- app/src/main/java/com/jerboa/Utils.kt | 22 ++++++++++++++----- .../ui/components/comment/CommentNode.kt | 2 +- .../ui/components/comment/CommentNodes.kt | 3 +-- .../jerboa/ui/components/post/PostActivity.kt | 2 +- .../ui/components/post/PostViewModel.kt | 2 +- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/jerboa/Utils.kt b/app/src/main/java/com/jerboa/Utils.kt index b451aa138..d28e8fee7 100644 --- a/app/src/main/java/com/jerboa/Utils.kt +++ b/app/src/main/java/com/jerboa/Utils.kt @@ -107,7 +107,7 @@ fun commentsToFlatNodes( fun buildCommentsTree( comments: List?, -// commentSortType: CommentSortType, + sortType: SortType, ): List { val map = LinkedHashMap() @@ -139,6 +139,8 @@ fun buildCommentsTree( } } + sortNodes(tree, sortType) + return tree } @@ -469,17 +471,25 @@ private fun DrawScope.drawEndBorder( ) } -fun sortNodes(nodes: List, sortType: SortType = SortType.New): List { - val afterRank = when (sortType) { - SortType.Hot -> nodes.sortedByDescending { +fun sortNodes(nodes: MutableList, sortType: SortType) { + when (sortType) { + SortType.Hot -> nodes.sortByDescending { hotRank( it.commentView.counts.score, it.commentView.comment.published ) } - else -> nodes + else -> {} + } + + nodes.sortBy { it.commentView.comment.deleted || it.commentView.comment.removed } + + // Go through the children recursively + nodes.forEach { node -> + node.children?.also { + sortNodes(it, sortType) + } } - return afterRank.sortedBy { it.commentView.comment.deleted || it.commentView.comment.removed } } fun hotRank(score: Int, dateStr: String): Double { diff --git a/app/src/main/java/com/jerboa/ui/components/comment/CommentNode.kt b/app/src/main/java/com/jerboa/ui/components/comment/CommentNode.kt index e814fedfd..f29483504 100644 --- a/app/src/main/java/com/jerboa/ui/components/comment/CommentNode.kt +++ b/app/src/main/java/com/jerboa/ui/components/comment/CommentNode.kt @@ -389,7 +389,7 @@ fun CommentNodesPreview() { val comments = listOf( sampleSecondCommentReplyView, sampleCommentReplyView, sampleCommentView ) - val tree = buildCommentsTree(comments) + val tree = buildCommentsTree(comments, SortType.Hot) CommentNodes( nodes = tree, moderators = listOf(), diff --git a/app/src/main/java/com/jerboa/ui/components/comment/CommentNodes.kt b/app/src/main/java/com/jerboa/ui/components/comment/CommentNodes.kt index 191ce8c50..1168fc5b0 100644 --- a/app/src/main/java/com/jerboa/ui/components/comment/CommentNodes.kt +++ b/app/src/main/java/com/jerboa/ui/components/comment/CommentNodes.kt @@ -5,7 +5,6 @@ import androidx.compose.runtime.Composable import com.jerboa.CommentNodeData import com.jerboa.datatypes.* import com.jerboa.db.Account -import com.jerboa.sortNodes @Composable fun CommentNodes( @@ -27,7 +26,7 @@ fun CommentNodes( showRead: Boolean = false, ) { Column { - sortNodes(nodes, SortType.Hot).forEach { node -> + nodes.forEach { node -> CommentNode( node = node, onUpvoteClick = onUpvoteClick, diff --git a/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt b/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt index 0c4dd7334..dd71db105 100644 --- a/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt +++ b/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt @@ -55,7 +55,7 @@ fun PostActivity( val listState = rememberLazyListState() val account = getCurrentAccount(accountViewModel = accountViewModel) - val commentNodes = sortNodes(buildCommentsTree(postViewModel.comments), SortType.Hot) + val commentNodes = buildCommentsTree(postViewModel.comments, SortType.Hot) val swipeRefreshState = rememberSwipeRefreshState( isRefreshing = postViewModel.loading && postViewModel diff --git a/app/src/main/java/com/jerboa/ui/components/post/PostViewModel.kt b/app/src/main/java/com/jerboa/ui/components/post/PostViewModel.kt index 5c3200733..7191dec4c 100644 --- a/app/src/main/java/com/jerboa/ui/components/post/PostViewModel.kt +++ b/app/src/main/java/com/jerboa/ui/components/post/PostViewModel.kt @@ -84,7 +84,7 @@ class PostViewModel : ViewModel() { likeCommentRoutine( commentView = mutableStateOf(commentView), voteType = voteType, - comments = comments, + // An edge case, but don't pass in comments, otherwise a resort will occur account = account, ctx = ctx, scope = viewModelScope,