修复会话列表把系统通知/合并转发消息的预览行恒显示成无信息量的"[消息]"
现象:好友通过验证、群成员加入、群邀请卡片("邀请你加入群聊。")这类系统消息 (x-im-type=system_notice/system_action)和合并转发消息,点开会话看到的是完整的一句 人话,但会话列表的预览行不显示这句话,一律显示占位符"[消息]"。 根因:message-center-view.jsx 的 draftyPreview() 只认三种取值来源——纯字符串、 Drafty 附件实体(content.ent[],映射成"[图片]"等标签)、以及 content.txt——最后兜底 到"[消息]"。但 system_notice/system_action 的真实文案字段是 content.text(跟 chat-message.jsx 渲染这类消息时读的字段一致),合并转发消息的文案字段是 content.comment/content.title,三者都不是 content.txt,全部落进兜底分支。 修复:draftyPreview() 补上对 content.text(system_*)和 content.comment/ content.title(forward_bundle)的识别,命中就直接用这句真实文案,仍然兜底到 "[消息]"覆盖真正未知的内容形状。 验证:真实浏览器操作,两个全新注册账号之间邀请入群后,会话列表预览行正确显示 "邀请你加入群聊。",不再是"[消息]"。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
64021fe428
commit
5c688007c8
@@ -106,6 +106,14 @@ function draftyPreview(content) {
|
|||||||
const label = {IM: '[图片]', VD: '[视频]', AU: '[语音]', EX: '[文件]', TC: '[名片]', VC: '[通话]'}[content.ent[0].tp];
|
const label = {IM: '[图片]', VD: '[视频]', AU: '[语音]', EX: '[文件]', TC: '[名片]', VC: '[通话]'}[content.ent[0].tp];
|
||||||
if (label) return label;
|
if (label) return label;
|
||||||
}
|
}
|
||||||
|
// 服务端的 system_notice/system_action(好友通过、群成员加入、群邀请卡片等,见 chat-message.jsx
|
||||||
|
// 对 x-im-type 的处理)以及合并转发消息都不是 Drafty,也没有 `txt` 字段,真正的可读文案在
|
||||||
|
// `text`(system_*)或 `comment`/`title`(forward_bundle)——原来这里只认 `txt`,这三类消息在
|
||||||
|
// 会话列表的预览行一律回退成没有信息量的"[消息]",即使内容本身早就是一句完整人话
|
||||||
|
// (比如"邀请你加入群聊。"),聊天页里点开看到的和列表预览完全对不上。
|
||||||
|
if (typeof content.text === 'string' && content.text) return content.text;
|
||||||
|
if (typeof content.comment === 'string' && content.comment) return content.comment;
|
||||||
|
if (typeof content.title === 'string' && content.title) return '[聊天记录] ' + content.title;
|
||||||
return content.txt || '[消息]';
|
return content.txt || '[消息]';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user