From db393d45346ca647d864c7e72a45edefd971e265 Mon Sep 17 00:00:00 2001 From: Anunay Maheshwari Date: Wed, 30 Aug 2023 14:34:23 +0530 Subject: [PATCH] fix(comments): calculate and expose indentLevel from CommentNode --- .../claw/common/comments/CommentEntry.kt | 2 +- .../claw/common/comments/CommentNode.kt | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt index 75b5bc6b..7aa2d16c 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt @@ -149,7 +149,7 @@ internal fun CommentEntry( .clickable { toggleExpanded(commentNode) } .background(MaterialTheme.colorScheme.background) .padding( - start = CommentEntryPadding * comment.indentLevel, + start = CommentEntryPadding * commentNode.indentLevel, end = CommentEntryPadding, top = CommentEntryPadding, bottom = CommentEntryPadding, diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentNode.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentNode.kt index ffc89bae..a396181e 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentNode.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentNode.kt @@ -17,12 +17,14 @@ internal data class CommentNode( val children: MutableList = mutableListOf(), val isUnread: Boolean = false, var isExpanded: Boolean = true, + var indentLevel: Int ) { fun addChild(child: CommentNode) { - if (comment.indentLevel + 1 == child.comment.indentLevel) { + if (comment.shortId == child.comment.parentComment) { children.add(child) child.parent = this } else { + child.indentLevel += 1 children.last().addChild(child) } } @@ -36,12 +38,24 @@ internal fun createListNode( val isUnread = { id: String -> commentState?.commentIds?.contains(id) == false } for (i in comments.indices) { - if (comments[i].indentLevel == 1) { - commentNodes.add(CommentNode(comment = comments[i], isUnread = isUnread(comments[i].shortId))) + if (comments[i].parentComment == null) { + commentNodes.add( + CommentNode( + comment = comments[i], + isUnread = isUnread(comments[i].shortId), + indentLevel = 1 + ) + ) } else { - commentNodes - .last() - .addChild(CommentNode(comment = comments[i], isUnread = isUnread(comments[i].shortId))) + commentNodes.last().let { + it.addChild( + CommentNode( + comment = comments[i], + isUnread = isUnread(comments[i].shortId), + indentLevel = it.indentLevel + 1 + ) + ) + } } }