From 34e10b0032c2d0b41dde8e3d7acc411eb8b43fa9 Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Sat, 31 May 2025 12:19:12 -0500 Subject: [PATCH] fix: Only show DM button if node is messageable (#1992) --- .../com/geeksville/mesh/ui/node/NodeDetail.kt | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetail.kt b/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetail.kt index a44a485fd..80fc0742a 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetail.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetail.kt @@ -372,6 +372,12 @@ private fun DeviceActions( var displayFavoriteDialog by remember { mutableStateOf(false) } var displayIgnoreDialog by remember { mutableStateOf(false) } var displayRemoveDialog by remember { mutableStateOf(false) } + val isUnmessageable = if (node.user.hasIsUnmessagable()) { + node.user.isUnmessagable + } else { + // for older firmwares + node.user.role?.isUnmessageableRole() == true + } NodeActionDialogs( node = node, displayFavoriteDialog = displayFavoriteDialog, @@ -393,14 +399,16 @@ private fun DeviceActions( ) if (!isLocal) { - NodeActionButton( - title = stringResource(id = R.string.direct_message), - icon = Icons.AutoMirrored.TwoTone.Message, - enabled = true, - onClick = { - onAction(NodeMenuAction.DirectMessage(node)) - } - ) + if (!isUnmessageable) { + NodeActionButton( + title = stringResource(id = R.string.direct_message), + icon = Icons.AutoMirrored.TwoTone.Message, + enabled = true, + onClick = { + onAction(NodeMenuAction.DirectMessage(node)) + } + ) + } NodeActionButton( title = stringResource(id = R.string.request_metadata), icon = Icons.Default.Memory,