feat(deck): бейдж числа комментариев на карточке (P1 diff — CardBadges веба)

parseCard читает commentsCount (модель Card отдаёт), DeckCardRow показывает «💬 N».
Green compile; detekt модуля 103=103 к HEAD (без новых замечаний).
This commit is contained in:
b-mob-deck
2026-07-13 07:39:50 +00:00
parent 01198a4d14
commit 9d726f4549
2 changed files with 7 additions and 1 deletions
@@ -100,6 +100,7 @@ class DeckRepository {
labels = parseLabels(card.optJSONArray("labels")),
assignees = parseAssignees(card.optJSONArray("assignedUsers")),
assigneeUids = parseAssigneeUids(card.optJSONArray("assignedUsers")),
commentsCount = card.optInt("commentsCount", 0),
)
private fun parseLabels(array: JSONArray?): List<DeckLabel> {
@@ -287,6 +288,7 @@ data class DeckCard(
val labels: List<DeckLabel> = emptyList(),
val assignees: List<String> = emptyList(),
val assigneeUids: List<String> = emptyList(),
val commentsCount: Int = 0,
)
data class DeckBoardDetail(
@@ -292,7 +292,7 @@ private fun DeckCardRow(card: DeckCard, onClick: () -> Unit, onToggleDone: () ->
)
}
val due = card.duedate?.let { formatDeckDue(it) }
if (due != null || card.assignees.isNotEmpty()) {
if (due != null || card.assignees.isNotEmpty() || card.commentsCount > 0) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(8.dp),
@@ -301,6 +301,10 @@ private fun DeckCardRow(card: DeckCard, onClick: () -> Unit, onToggleDone: () ->
if (due != null) {
Text("🗓 $due", style = MaterialTheme.typography.labelMedium, color = F7Colors.TextSecondary)
}
if (card.commentsCount > 0) {
val comments = "💬 ${card.commentsCount}"
Text(comments, style = MaterialTheme.typography.labelMedium, color = F7Colors.TextSecondary)
}
if (card.assignees.isNotEmpty()) {
Text("👤 ${card.assignees.joinToString(", ")}", style = MaterialTheme.typography.labelMedium, color = F7Colors.TextSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis)
}