From 2f13aee171c42505be82f2824f2585cfdfd3e831 Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Tue, 20 May 2025 23:30:11 -0500 Subject: [PATCH] feat: Use node colors for contact chip (#1891) --- .../main/java/com/geeksville/mesh/model/UIState.kt | 7 +++++++ .../main/java/com/geeksville/mesh/ui/ContactItem.kt | 12 +++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index 29151152a..796f54d7c 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -167,6 +167,7 @@ data class Contact( val messageCount: Int, val isMuted: Boolean, val isUnmessageable: Boolean, + val nodeColors: Pair? = null, ) @Suppress("LongParameterList") @@ -385,6 +386,7 @@ class UIViewModel @Inject constructor( // grab usernames from NodeInfo val user = getUser(if (fromLocal) data.to else data.from) + val node = getNode(if (fromLocal) data.to else data.from) val shortName = user.shortName val longName = if (toBroadcast) { @@ -403,6 +405,11 @@ class UIViewModel @Inject constructor( messageCount = packetRepository.getMessageCount(contactKey), isMuted = settings[contactKey]?.isMuted == true, isUnmessageable = user.isUnmessagable, + nodeColors = if (!toBroadcast) { + node.colors + } else { + null + }, ) } }.stateIn( diff --git a/app/src/main/java/com/geeksville/mesh/ui/ContactItem.kt b/app/src/main/java/com/geeksville/mesh/ui/ContactItem.kt index dfad3725d..b2251c88f 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/ContactItem.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/ContactItem.kt @@ -31,6 +31,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.twotone.VolumeOff import androidx.compose.material3.AssistChip +import androidx.compose.material3.AssistChipDefaults import androidx.compose.material3.Card import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -69,6 +70,14 @@ fun ContactItem( .padding(horizontal = 8.dp, vertical = 6.dp), shape = RoundedCornerShape(12.dp), ) { + val colors = if (contact.nodeColors != null) { + AssistChipDefaults.assistChipColors( + labelColor = Color(contact.nodeColors.first), + containerColor = Color(contact.nodeColors.second), + ) + } else { + AssistChipDefaults.assistChipColors() + } Row( modifier = Modifier @@ -89,7 +98,8 @@ fun ContactItem( fontWeight = FontWeight.Normal, textAlign = TextAlign.Center, ) - } + }, + colors = colors ) Column( modifier = Modifier.weight(1f),