From f6e6f86cc42bc3108a592ebc14d1227d49fbdaa3 Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Thu, 9 Jul 2026 22:15:48 +0300 Subject: [PATCH] perf(#523): cache asJsonObject in ChatBubble parse loops (surgical rebase onto main, preserves #514) (#523) --- .../java/com/m57/hermescontrol/ui/chat/ChatBubble.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/m57/hermescontrol/ui/chat/ChatBubble.kt b/app/src/main/java/com/m57/hermescontrol/ui/chat/ChatBubble.kt index fd7c456f..e4f16812 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/chat/ChatBubble.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/chat/ChatBubble.kt @@ -1559,13 +1559,14 @@ fun parseToolOutput( } else if (appsArr != null) { appsArr.forEachIndexed { idx, el -> if (el.isJsonObject) { + val obj = el.asJsonObject val name = - el.asJsonObject + obj .get("name") ?.takeIf { !it.isJsonNull } ?.asString ?: "?" val pid = - el.asJsonObject + obj .get("pid") ?.takeIf { !it.isJsonNull } ?.asInt @@ -1586,18 +1587,19 @@ fun parseToolOutput( for (i in 0 until previewCount) { val el = elementsArr[i] if (el.isJsonObject) { + val obj = el.asJsonObject val idx = - el.asJsonObject + obj .get("index") ?.takeIf { !it.isJsonNull } ?.asInt val role = - el.asJsonObject + obj .get("role") ?.takeIf { !it.isJsonNull } ?.asString val label = - el.asJsonObject + obj .get("label") ?.takeIf { !it.isJsonNull } ?.asString