Karlcarlo
e29052f107
fix(首页): 来信卡默认收起,等 /letters 结果再决定显示 —— 修掉「先冒出来再缩回去」的闪烁 (v26092003)
现象:从商城切回首页加载 mama-box 时,先渲染出一张「宝宝来信/宝宝回信啦」卡
(用内置样例信 + 本地待投递队列拼的),几百毫秒后 /letters 回来说没有未读,
卡又缩回去,闪一下。
原因:卡在 index.html 里默认可见,pushLatestToHome() 是「先显示、数据回来再决定」;
而首屏渲染远早于 /letters。
改法(反过来:没确定之前一律不显示):
- index.html:#homeLetter 默认带 .hide、#homeBody 默认带 .no-letter(首屏按「无卡」排版,不跳)
- app.js:新增 lettersResolved 开关;pushLatestToHome() 在未确定、访客态(无 openid)、
或后端明确未建档(pregEmpty)时一律保持收起;applyRemoteLetters 的每条终态
(成功/空列表/接口挂/无身份)与 applyRemoteProfile 的访客分支都置位并重算
- 访客分支顺手补了一次 pushLatestToHome():此前清空 LETTERS 后没人重算,
那张卡会顶着一封已不存在的信留在首页
验证(本地 + 延迟代理四态,浏览器实测):
- 有建档 + 0 封信:全程 hidden(修的就是这个)
- 有建档 + 1 封未读:接口回来前 hidden → 回来后显示「小汤圆来信」
- 接口全挂:回退内置样例照旧显示(离线行为不变)
- 访客(无 openid):hidden