From 4a140e6c7934ed68bf2508c66aacbe4e32f53eb8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 6 Sep 2026 04:59:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B6=88=E6=81=AF=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E7=A9=BA=E7=8A=B6=E6=80=81=E8=AF=AF=E5=AF=BC=E6=96=87?= =?UTF-8?q?=E6=A1=88=E3=80=81=E6=9C=AA=E7=99=BB=E5=BD=95=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=97=B6=E9=9D=99=E9=BB=98=E6=98=BE=E7=A4=BA=E7=A9=BA=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 会话列表为空时统一显示"未找到相关会话"+搜索图标,即使用户根本没有 输入过搜索词——账号本身还没有任何会话时,也被说成"你的搜索没找到东 西"。现在区分:真正搜索无果才显示这句,否则显示"暂无会话"。 另外,myUserId尚未就绪(自动登录未完成/失败)但sidePanelSelected已 经是messages-home(比如收藏的旧链接、恢复的历史标签页)时,原来的 offline判断条件恒为false,页面会静默渲染一个和"账号确实是空的"没法 区分的空列表,用户以为账号没数据而不是还没登录成功。现在myUserId为 空时也按"未连接"处理,诚实展示"加载中"。 第十二轮最小粒度测试 Ch1-2 发现。 Co-Authored-By: Claude Sonnet 5 --- src/views/message-center-view.jsx | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/views/message-center-view.jsx b/src/views/message-center-view.jsx index 60ec6bd6..95b0ff0f 100644 --- a/src/views/message-center-view.jsx +++ b/src/views/message-center-view.jsx @@ -236,7 +236,15 @@ function MessageHome({view, connected, chatList, myUserId, onTopicSelected, onOp // Was `useState(null)` + its own effect -- refetched from scratch (blank entries/badges for a // beat) every time this component remounted, e.g. after a trip to another sidepanel and back. const [bootstrap] = useCachedData(myUserId ? 'bootstrap:' + myUserId : null, getBootstrap, [myUserId]); - const offline = view === 'messages-offline' || (!!myUserId && connected === false); + // sidepanel-view.jsx 会在 sidePanelSelected 已经是 'messages-home'(例如收藏夹里的旧链接、浏览器 + // 从上次关闭前恢复的标签页)但 myUserId 还没就绪时,照样把这个视图渲染出来(它自己的 + // `fullPage = !myUserId || view !== 'messages-home'` 分支就是为这种情况准备的)——如果这时候 + // token 续登录失败或者还没跑完,原来这里只看 `!!myUserId && connected===false`,myUserId 本身是 + // null 时这个条件恒为 false,于是不会进入"加载中"分支,会话列表和 bootstrap 又因为 + // useCachedData 的 key 是 null 而永远不发请求,最终呈现的是一句容易误导人的"暂无会话/未找到 + // 相关会话"——用户会以为账号是空的,而不是"还没登录成功"。myUserId 本身为空也按"未连接"处理, + // 至少诚实地展示"加载中"而不是一个看起来正常但其实是半成品的空列表。 + const offline = view === 'messages-offline' || !myUserId || connected === false; // "置顶" only ever changed a background tint (see the `pinned` comment inside // normalizeConversations) -- every other IM this product's users have used floats a pinned chat to @@ -326,7 +334,14 @@ function MessageHome({view, connected, chatList, myUserId, onTopicSelected, onOp {item.unread ? {item.unread > 99 ? '99+' : item.unread} : item.muted ? notifications_off : null} )} - {filtered.length === 0 ?
search_off

未找到相关会话

: null} + {/* "未找到相关会话"(搜索图标)只在用户真的输入过搜索词却匹配不到时才准确——`conversations` + 本身为空(例如尚未完成登录/数据尚未拉取到、或租户把系统消息与文件助手都关闭且用户还没有 + 任何会话)跟"搜索没匹配到"是两种不同情况,原来两者共用同一句"未找到相关会话"+放大镜 + 图标,会把"这个账号目前就是没有任何会话"说成"你的搜索没找到东西",用户没搜索过却看到 + 搜索无结果的图标和文案。 */} + {filtered.length === 0 ? (query.trim() ? +
search_off

未找到相关会话

: +
forum

暂无会话

) : null}