悄悄话留言:赞数前 26 条已变星,其余 0~2 赞(够 3 赞本机变星+特效);早孕留言也按内容限定孕周

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-07 04:14:54 +00:00
parent 6bf65ef25d
commit bc65bea7e9
6 changed files with 36 additions and 11 deletions

View File

@@ -3,7 +3,7 @@
(function () {
'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26110628';
var VER = '26110629';
const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));

View File

@@ -61,11 +61,11 @@
function repOf(c, me) { return { p: c.parent, n: me ? '我' : (c.nickname || '孕妈'), me: me, to: c.parentName, t: c.text, ts: c.at, st: me ? c.status : '' }; }
function load() {
if (loading || SIM) return; loading = true;
fetch('guangchang/cm.json?v=26110628').then(function (r) { return r.json(); }).then(function (j) {
fetch('guangchang/cm.json?v=26110629').then(function (r) { return r.json(); }).then(function (j) {
var PP = j.p;
SIM = (j.c[PID] || []).map(function (c, k) {
var p = PP[c[0]];
return { key: PID + '#' + k, n: p[0], av: avP(p[1]), s: p[2], t: c[1], likes: c[2],
return { key: PID + '#' + k, n: p[0], av: avP(p[1]), s: p[2], t: c[1], likes: c[2], st0: !!c[4],
r: c[3].map(function (x) { var q = x[0] < 0 ? null : PP[x[0]]; return { n: q ? q[0] : '孕妈悄悄话', t: x[1] }; }) };
});
build(); paintGo(); focusWc();
@@ -149,6 +149,8 @@
}, 600);
}
var wkOf = function (c) { var x = /孕\s*(\d+)\s*周/.exec(c.s || ''); return x ? +x[1] : 0; };
/* 11-07 方案 A:模拟留言 = cm.json 标了已变星的 + 赞数(含我本机这一赞)够 STAR_N 的 */
function simStar(c) { c.star = c.st0 || likesOf(c) >= STAR_N; }
var likesOf = function (c) { return c.real ? c.likes : c.likes + (LIKE[c.key] ? 1 : 0); };
var likedOf = function (c) { return c.real ? c.liked : !!LIKE[c.key]; };
/* 最热:挂了星的在前,再按赞;最新:真实留言按时间,模拟的接在后面;同孕周:和我差 ±1 周的,按最热。我自己发的永远在最上面 */
@@ -171,6 +173,7 @@
}
function build() {
if (!SIM || !REAL) return;
SIM.forEach(simStar);
ALL = sorted(); shown = 0; ls.innerHTML = '';
paintGo();
if (!ALL.length) {
@@ -231,9 +234,14 @@
var b = e.target.closest('[data-wcl]'); if (!b) return;
var k = b.dataset.wcl, c = ALL.filter(function (x) { return x.key === k; })[0]; if (!c) return;
if (!c.real) {
if (LIKE[k]) delete LIKE[k]; else LIKE[k] = 1;
/* 跟真实留言一样:赞了就不能取消;这一赞让它够了 STAR_N → 变星特效 */
if (LIKE[k]) { toast('你已经赞过啦'); return; }
LIKE[k] = 1;
try { localStorage.setItem(LK, JSON.stringify(LIKE)); } catch (e2) {}
paintLk(b, c); if (LIKE[k] && navigator.vibrate) navigator.vibrate(8);
var was0 = c.star; simStar(c);
paintLk(b, c); b.classList.add('pop'); setTimeout(function () { b.classList.remove('pop'); }, 500);
if (navigator.vibrate) navigator.vibrate(8);
if (c.star && !was0) { rerender(c); starFx(c.t, false); }
return;
}
/* 真实留言:服务端计数,赞了就不能取消(同星星的抱抱) */