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

- 将StringBuilder替换为String变量以避免清空问题
- 添加JSON数据前缀处理,移除"data:"前缀
- 修复字符串拼接方式,使用+=操作符替代appendLine
- 优化结果发布逻辑,直接发布字符串而非toString()调用
这个提交包含在:
徐勤民 2026-04-16 15:06:21 +08:00
父节点 6801b998e2
当前提交 d47ec13546

查看文件

@ -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) {