fix(首页): 来信卡数据源改为 laixin,与底 tab 红点统一(修两套数据不一致)(v26092004)
问题:底 tab 早已改跳 laixin、红点读 /api/mp/public/laixin/unread,但首页那张 「宝宝来信」卡仍由 pushLatestToHome() 按 LETTERS(box_app /mama-box/letters)驱动, 而那条线对多数用户是 0 封 —— 同一屏上会出现「红点说有新信、卡里什么都没有」。 改法(两者共用一个 laixin 未读结果): - 新增 hideLetterCard() + applyLaixinReminder(r):unread>0 才显示,文案按 「N 封新信 / M 条新回信」组装并附「最近一封 <时间>」;归零收起;上游降级(ok:false)、 访客态、未建档一律收起(与角标同一套判据) - syncLaixinBadge() → syncLaixinReminder():一次 fetch 同时落红点与首页卡(owner 唯一) - 删除 pushLatestToHome() / lettersResolved / state.homeLetter / openDetail(): 内置来信屏(#screen-letter)与其 /letters 数据仍在,但不再往首页推卡 - 首页卡点击改走 openLetterApp()(跳 laixin),与底 tab 同落点;卡不再打开内置详情 - 卡仍默认 .hide + #homeBody 默认 .no-letter(保住 §9 的不闪规则) 验证(本地四态 mock + 浏览器): - laixin 未读=2 → 接口回来前 hidden,回来后显示「小汤圆来信 / 有 1 封新信、1 条新回信 · 最近一封 今天 9:00」,红点同亮(同一次请求) - 未读=0 → 全程收起;上游 ok:false → 冷启动收起、已显示则保持显示 - 访客(无 openid)→ 收起 - **box_app 来信有 1 封未读但 laixin 未读=0 → 首页卡仍收起**(内置屏照常渲染,互不影响) - 点卡 → https://mp.yizhezhe.com/laixin/?openid=…&unionid=…;内置列表点开详情仍正常;errors 空
This commit is contained in:
31
index.html
31
index.html
@@ -7,7 +7,7 @@
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>兜爸心选 · 孕育陪伴</title>
|
||||
<!-- V:26092003 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<!-- V:26092004 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<link rel="stylesheet" href="mama-box.css">
|
||||
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
|
||||
<!-- 共享助手:授权/跳商城/位置上报(分享卡片同步,见 docs/h5-auth-standard.md 第四节) -->
|
||||
@@ -119,24 +119,25 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 宝宝一有新回信,pushLatestToHome() 会把这张卡换成那条回信,
|
||||
并加上 .has-new(信封右上角冒一个小红点)。
|
||||
没有未读、也没有新回信时,同一个函数会给它挂 .hide 整张收起来。
|
||||
<!-- 宝宝来信提醒卡。**数据源是 laixin(第三方「宝宝来信」应用)**,
|
||||
由 js 里的 syncLaixinReminder() → applyLaixinReminder() 唯一负责显隐与文案
|
||||
(拉 /api/mp/public/laixin/unread,unread > 0 才显示、带 .has-new 小红点)。
|
||||
点击 = 跳 laixin,与底 tab「宝宝来信」同落点(app.js 里绑的是 openLetterApp)。
|
||||
|
||||
⚠️ 2026-09-20:这张卡**默认就是收起的**(标记里直接带 .hide,
|
||||
#homeBody 直接带 .no-letter)。原因:卡的最终显隐要等 /letters
|
||||
回来才知道,而首屏渲染远早于它 —— 默认显示的话,就会出现
|
||||
「先冒出一张(用内置样例/本地队列拼出来的)来信卡,数据回来发现
|
||||
没有未读,再缩回去」的闪一下(商城↔首页来回切时特别明显)。
|
||||
所以规则改成:**没确定之前一律不显示,确认有未读/新回信才显示**。
|
||||
pushLatestToHome() 里的 lettersResolved 就是这个「已确定」开关,
|
||||
别把这里的 .hide / .no-letter 去掉 —— 去掉就退回闪烁版。 -->
|
||||
<button class="letter-card ripple hide" id="homeLetter" data-goto="letter-detail">
|
||||
#homeBody 直接带 .no-letter)。卡的显隐要等未读接口回来才知道,
|
||||
而首屏渲染远早于它 —— 默认显示的话会「先冒出一张假卡、数据回来再缩回去」
|
||||
(商城↔首页来回切时特别明显)。
|
||||
⚠️ 别把这里的 .hide / .no-letter 去掉,去掉就退回闪烁版。
|
||||
⚠️ 这张卡 2026-09-20 之前读的是 box_app 自己的 /mama-box/letters(多数用户 0 封),
|
||||
而底 tab 早已跳 laixin —— 两套数据导致「红点说有新信、卡里什么都没有」。
|
||||
改数据源就是修这个,**别再把它接回 LETTERS**(内置来信屏仍在,但不再往首页推卡)。 -->
|
||||
<button class="letter-card ripple hide" id="homeLetter">
|
||||
<span class="lc-envwrap"><img class="lc-env" src="assets/img/02cf420f0d07.png" alt="" aria-hidden="true"></span>
|
||||
<div class="lc-body">
|
||||
<!-- ⚠️ 这句只是**没填小名时的兜底**,屏幕上实际由 pushLatestToHome()
|
||||
改写成「小汤圆来信」/「小汤圆回信啦」。改这句必须连着改那边,
|
||||
否则会出现「HTML 里写着一套、屏幕上是另一套」。
|
||||
<!-- ⚠️ 这段只是**兜底**(正常情况下用户看不到:卡默认 .hide,
|
||||
有未读时由 applyLaixinReminder() 改写成「小汤圆来信」+ 通用提醒文案)。
|
||||
改这几行时连着那边一起看,否则会出现「HTML 里写着一套、屏幕上是另一套」。
|
||||
⚠️ 上一批这里短暂叫过「宝宝的新消息」,本批随整条线退回「来信」。 -->
|
||||
<div class="lc-title" id="lcTitle">宝宝来信</div>
|
||||
<div class="lc-desc" id="lcDesc">妈妈,今天我在你肚子里翻了个身……</div>
|
||||
|
||||
Reference in New Issue
Block a user