Переглянути джерело

fix(chat): 修复聊天消息解析和字符串构建问题

- 将StringBuilder替换为String变量以避免清空问题
- 添加JSON数据前缀处理,移除"data:"前缀
- 修复字符串拼接方式,使用+=操作符替代appendLine
- 优化结果发布逻辑,直接发布字符串而非toString()调用
徐勤民 23 годин тому
батько
коміт
d47ec13546

+ 9 - 8
app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt

@@ -20,28 +20,29 @@ class ChatVM : BaseViewModel() {
         HttpManager.getApi(Service::class.java).chat(ChatData("我的代办任务有哪些?"))
             .subscribeOn(Schedulers.io())
             .subscribe({ body ->
-                val sb = StringBuilder()
+                var sb = ""
                 body.charStream().buffered().use { reader ->
                     try {
                         var line: String?
                         while (reader.readLine().also { line = it } != null) {
                             val l = line!!
                             if (l.isNotEmpty()) {
-                                val model = GsonImplHelp.get().toObject(l, ChatModel::class.java)
+                                val json = if (l.startsWith("data:")) l.removePrefix("data:").trim() else l
+                                val model = GsonImplHelp.get().toObject(json, ChatModel::class.java)
                                 if (t != model.type) {
-                                    sb.clear()
+                                    sb = ""
                                 }
                                 t = model.type
                                 if (model.type == "string") {
                                     val model1 =
-                                        GsonImplHelp.get().toObject(l, ChatModel1::class.java)
-                                    sb.appendLine(model1.data)
+                                        GsonImplHelp.get().toObject(json, ChatModel1::class.java)
+                                    sb+=model1.data
                                 } else {
                                     val model2 =
-                                        GsonImplHelp.get().toObject(l, ChatModel2::class.java)
-                                    sb.appendLine(model2.data.content)
+                                        GsonImplHelp.get().toObject(json, ChatModel2::class.java)
+                                    sb+=model2.data.content
                                 }
-                                result.postValue(sb.toString())
+                                result.postValue(sb)
                             }
                         }
                     } catch (e: Exception) {