
























@@ -522,7 +522,7 @@ class ChatController(
522522 array.mapNotNull { item ->
523523val obj = item.asObjectOrNull() ?: return@mapNotNull null
524524val role = obj["role"].asStringOrNull() ?: return@mapNotNull null
525-val content = obj["content"].asArrayOrNull()?.mapNotNull(::parseMessageContent) ?: emptyList()
525+val content = obj["content"].asArrayOrNull()?.mapNotNull(::parseChatMessageContent) ?: emptyList()
526526val ts = obj["timestamp"].asLongOrNull()
527527ChatMessage(
528528 id = UUID.randomUUID().toString(),
@@ -540,21 +540,6 @@ class ChatController(
540540 )
541541 }
542542543-private fun parseMessageContent(el: JsonElement): ChatMessageContent? {
544-val obj = el.asObjectOrNull() ?: return null
545-val type = obj["type"].asStringOrNull() ?: "text"
546-return if (type == "text") {
547-ChatMessageContent(type = "text", text = obj["text"].asStringOrNull())
548- } else {
549-ChatMessageContent(
550- type = type,
551- mimeType = obj["mimeType"].asStringOrNull(),
552- fileName = obj["fileName"].asStringOrNull(),
553- base64 = obj["content"].asStringOrNull(),
554- )
555- }
556- }
557-558543private fun parseSessions(jsonString: String): List<ChatSessionEntry> {
559544val root = json.parseToJsonElement(jsonString).asObjectOrNull() ?: return emptyList()
560545val sessions = root["sessions"].asArrayOrNull() ?: return emptyList()
@@ -588,6 +573,27 @@ class ChatController(
588573 }
589574}
590575576+internal fun parseChatMessageContent(el: JsonElement): ChatMessageContent? {
577+val obj = el.asObjectOrNull() ?: return null
578+return when (obj["type"].asStringOrNull() ?: "text") {
579+"text", "input_text", "output_text" ->
580+ChatMessageContent(
581+ type = "text",
582+ text = obj["text"].asStringOrNull() ?: obj["content"].asStringOrNull(),
583+ )
584+585+"image" ->
586+ChatMessageContent(
587+ type = "image",
588+ mimeType = obj["mimeType"].asStringOrNull(),
589+ fileName = obj["fileName"].asStringOrNull(),
590+ base64 = obj["content"].asStringOrNull()?.takeIf { it.isNotBlank() },
591+ )
592+593+else -> null
594+ }
595+}
596+591597internal data class MainSessionState(
592598val currentSessionKey: String,
593599val appliedMainSessionKey: String,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。