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