diff --git a/src/views/message-center-view.jsx b/src/views/message-center-view.jsx index ac27a586..bb1e4830 100644 --- a/src/views/message-center-view.jsx +++ b/src/views/message-center-view.jsx @@ -164,7 +164,18 @@ function normalizeConversations(chatList, myUserId) { // 在线状态只对单聊有意义:群不存在"在线",传 undefined 让 Avatar 不渲染那个状态点 online: isGroup ? undefined : !!item.online, muted: !!(item.acs && item.acs.isMuted && item.acs.isMuted()), - pinned: !!item.pinned + // 原来读的是 item.pinned——这个键在原生订阅对象上根本不存在,永远 undefined,置顶开关点了 + // 会话列表从来没有过任何视觉变化。真实存放位置是 subscription 原生 private.pinned 字段, + // 但只对**群聊**成立:group-management-view.jsx 的置顶走 updateGroupMemberSettings -> + // serveIMGroupMemberSettings,服务端确实写的是 Subs.Private,随原生 {meta} 同步下来(真实 + // 验证:开关点亮后要等下一次重连/刷新才会在这里体现——同一会话内没有实时 {pres} 通知去让 + // 已连接的这份 subscription 缓存失效,这是已知的、这次没有顺手解决的次要延迟,不是没生效)。 + // contact-management-view.jsx 的单聊置顶走的是完全不同的 updateConversationSettings -> + // serveIMConversationSettings,服务端存进独立的 im_conversation_settings 表,从不写入原生 + // Subs.Private——单聊置顶因此不管等多久重连都不会在这里出现,这是真实的后端架构缺口(没有 + // 批量查询会话设置的接口,前端也不可能为渲染一屏会话列表挨个按 topic 发请求),已记录到 + // 后端问题清单,不是这一行能修的。 + pinned: !!(item.private && item.private.pinned) }; }); }