修复消息首页空状态误导文案、未登录完成时静默显示空列表
会话列表为空时统一显示"未找到相关会话"+搜索图标,即使用户根本没有 输入过搜索词——账号本身还没有任何会话时,也被说成"你的搜索没找到东 西"。现在区分:真正搜索无果才显示这句,否则显示"暂无会话"。 另外,myUserId尚未就绪(自动登录未完成/失败)但sidePanelSelected已 经是messages-home(比如收藏的旧链接、恢复的历史标签页)时,原来的 offline判断条件恒为false,页面会静默渲染一个和"账号确实是空的"没法 区分的空列表,用户以为账号没数据而不是还没登录成功。现在myUserId为 空时也按"未连接"处理,诚实展示"加载中"。 第十二轮最小粒度测试 Ch1-2 发现。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
8575c83980
commit
4a140e6c79
@@ -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
|
// 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.
|
// 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 [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
|
// "置顶" 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
|
// 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 ? <b>{item.unread > 99 ? '99+' : item.unread}</b> : item.muted ? <Icon>notifications_off</Icon> : null}
|
{item.unread ? <b>{item.unread > 99 ? '99+' : item.unread}</b> : item.muted ? <Icon>notifications_off</Icon> : null}
|
||||||
</span>
|
</span>
|
||||||
</button>)}
|
</button>)}
|
||||||
{filtered.length === 0 ? <div className="messages-empty"><Icon>search_off</Icon><p>未找到相关会话</p></div> : null}
|
{/* "未找到相关会话"(搜索图标)只在用户真的输入过搜索词却匹配不到时才准确——`conversations`
|
||||||
|
本身为空(例如尚未完成登录/数据尚未拉取到、或租户把系统消息与文件助手都关闭且用户还没有
|
||||||
|
任何会话)跟"搜索没匹配到"是两种不同情况,原来两者共用同一句"未找到相关会话"+放大镜
|
||||||
|
图标,会把"这个账号目前就是没有任何会话"说成"你的搜索没找到东西",用户没搜索过却看到
|
||||||
|
搜索无结果的图标和文案。 */}
|
||||||
|
{filtered.length === 0 ? (query.trim() ?
|
||||||
|
<div className="messages-empty"><Icon>search_off</Icon><p>未找到相关会话</p></div> :
|
||||||
|
<div className="messages-empty"><Icon>forum</Icon><p>暂无会话</p></div>) : null}
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
<BottomNavigation />
|
<BottomNavigation />
|
||||||
|
|||||||
Reference in New Issue
Block a user