修复消息首页"置顶聊天"读了个不存在的字段,从来没有视觉效果(第2章复测发现)
normalizeConversations 里 pinned 读的是 item.pinned——原生 Tinode 订阅对象上根本
没有这个键,恒为 undefined。第5/6章的置顶开关点了之后,服务端确实存了,但这个
列表拿到的永远是"没置顶",用户会觉得这个开关是假的。
真实存放位置是订阅的原生 private.pinned 字段,但只对群聊成立:群聊置顶走
updateGroupMemberSettings,服务端真的写进 Subs.Private,会随原生 {meta} 同步下来
(真实验证:重连后能看到;同一连接内没有实时 {pres} 通知,所以点亮开关那一刻不会
立即反映在列表上,要等下一次重连,这个次要延迟这次没有顺手解决)。单聊置顶走的
是完全不同的 updateConversationSettings,服务端存进独立的 im_conversation_settings
表,从不写入原生 Subs.Private——不管等多久重连都不会在这里出现,这是真实的后端
架构缺口(没有批量查询会话设置的接口,前端不可能为渲染一屏列表去挨个 topic 发
请求核对置顶状态),已记录、这次没法在前端解决。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4337c45674
commit
7340b5e135
@@ -164,7 +164,18 @@ function normalizeConversations(chatList, myUserId) {
|
|||||||
// 在线状态只对单聊有意义:群不存在"在线",传 undefined 让 Avatar 不渲染那个状态点
|
// 在线状态只对单聊有意义:群不存在"在线",传 undefined 让 Avatar 不渲染那个状态点
|
||||||
online: isGroup ? undefined : !!item.online,
|
online: isGroup ? undefined : !!item.online,
|
||||||
muted: !!(item.acs && item.acs.isMuted && item.acs.isMuted()),
|
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)
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user