
Your NameandClaude Sonnet 5
2ee8bac6a0
修复消息首页会话预览恒为"暂无消息",即使会话有真实历史消息
message-center-view.jsx 的预览文字读 topic.latestMessage(),这个方法
只会从话题自己的本地消息缓存里取值——而这个缓存只有在话题真正被
subscribe 过一次数据拉取后才会填充。me.contacts()(resetContactList)
给出的是每个联系人真实的、已缓存的Topic实例,包括用户这次会话里
从未打开过的——这些话题的latestMessage()恒为undefined,即使同一个
对象自己的touched/seq字段能证明服务端真实存在历史消息。
新增prefetchLatestMessagePreviews():对chatList里seq>0但本地缓存为空
的话题,一次性拉取最新1条消息填充预览。用一个Set跟踪已尝试过的话题,
避免resetContactList()(几乎每个{meta}/{pres}事件都会触发一次)反复
重新拉取同一个话题。
调试过程中发现并修正了自己犯的两个错误:(1) resetContactList()在
websocket握手完成前就会被本地持久化缓存恢复触发一次,此时的subscribe
必然503失败,加了isConnected()判断跳过,避免过早失败把话题永久标记
为"已尝试";(2) Topic.subscribe(getParams, setParams)的参数顺序搞反,
把查询对象传成了第二个参数(setParams),导致subscribe成功但发出的
{sub}包完全没有get子句,从未真正请求过消息数据。
已用真实浏览器验证:好友kcg051307会话(真实71条历史消息)刷新页面
后预览从"暂无消息"变为真实的最新消息内容,未读角标数字不受影响
(确认没有误将未读消息标记为已读)。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 10:16:48 +08:00
..
2025-10-26 19:56:55 +03:00
2025-07-09 10:53:32 +03:00
2026-08-25 18:30:40 +08:00
2026-09-05 17:09:42 +08:00
2026-01-19 15:41:33 +03:00
2026-09-06 04:23:44 +08:00
2026-08-25 18:30:40 +08:00
2026-09-06 00:57:17 +08:00
2026-03-01 13:59:59 +03:00
2026-09-06 05:30:40 +08:00
2025-09-20 18:18:01 +03:00
2026-08-25 18:30:40 +08:00
2026-09-05 18:23:19 +08:00
2026-01-19 15:41:33 +03:00
2023-01-24 08:53:08 -08:00
2026-09-05 13:06:18 +08:00
2026-09-06 04:59:35 +08:00
2026-08-25 18:30:40 +08:00
2026-09-06 05:30:53 +08:00
2026-01-20 12:58:58 +03:00
2023-05-17 18:31:26 -07:00
2026-09-05 18:17:48 +08:00
2026-09-05 01:03:41 +08:00
2023-03-23 18:09:11 -07:00
2026-09-05 18:42:08 +08:00
2026-09-06 10:16:48 +08:00
2023-01-27 16:18:23 -08:00
2023-05-08 14:08:21 -07:00
2026-01-16 11:51:42 +03:00
2026-09-06 04:23:48 +08:00