From 439dee7134522326701c978d7bdb95140c874e01 Mon Sep 17 00:00:00 2001 From: James Rich Date: Thu, 21 May 2026 17:50:16 -0500 Subject: [PATCH] fix: use Node.isOnline instead of hardcoded 30s threshold The model's isOnline property uses the project-standard 2-hour window (onlineTimeThreshold), consistent with getMeshStatus().onlineNodeCount. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../org/meshtastic/core/data/ai/AiFunctionProviderImpl.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/data/src/commonMain/kotlin/org/meshtastic/core/data/ai/AiFunctionProviderImpl.kt b/core/data/src/commonMain/kotlin/org/meshtastic/core/data/ai/AiFunctionProviderImpl.kt index ef3d572d6..3d968eecf 100644 --- a/core/data/src/commonMain/kotlin/org/meshtastic/core/data/ai/AiFunctionProviderImpl.kt +++ b/core/data/src/commonMain/kotlin/org/meshtastic/core/data/ai/AiFunctionProviderImpl.kt @@ -126,13 +126,12 @@ class AiFunctionProviderImpl( val nodeMap = nodeRepository.nodeDBbyNum.first() val nodes = nodeMap.values.map { node -> - val elapsedTimeMs = clock.now().toEpochMilliseconds() - node.lastHeard.toLong() * MS_PER_SEC NodeSummary( id = "!${node.num.toString(HEX_RADIX)}", name = node.user.long_name.takeIf { it.isNotBlank() } ?: "Node ${node.num}", batteryLevel = node.deviceMetrics.battery_level?.coerceIn(0, MAX_BATTERY_LEVEL), lastHeard = node.lastHeard.toLong() * MS_PER_SEC, - isOnline = elapsedTimeMs < ONLINE_THRESHOLD_MS, + isOnline = node.isOnline, ) } GetNodeListResult.Success(nodes.sortedByDescending { it.lastHeard }) @@ -347,7 +346,6 @@ class AiFunctionProviderImpl( companion object { private val OPERATION_TIMEOUT = 5.seconds private const val MAX_BATTERY_LEVEL = 100 - private const val ONLINE_THRESHOLD_MS = 30_000L private const val HEX_RADIX = 16 private const val MS_PER_SEC = 1000L private const val HEALTH_SCORE_BASE = 50