diff --git a/pages/timer/timer.js b/pages/timer/timer.js index 0edbcdd..56b092c 100644 --- a/pages/timer/timer.js +++ b/pages/timer/timer.js @@ -412,6 +412,7 @@ Page({ // Modal state showCompletion: true, completionElapsed: 0, + completionActualElapsed: elapsed, completionTarget: this.data.duration, completionOvertime: Math.max(0, elapsed - this.data.duration), completionStreak: finalStreak, @@ -494,7 +495,7 @@ Page({ * 刚才撑了多久,转化率更高;右上角"···"菜单也共用同一份文案。 */ onShareAppMessage() { - const elapsed = this.data.completionElapsed || this.data.duration + const elapsed = this.data.completionActualElapsed || this.data.duration const s = config.share.timer return { title: s.titleTemplate.replace('{elapsed}', elapsed), @@ -506,7 +507,7 @@ Page({ * 分享到朋友圈,同样带上刚完成的时长晒成绩。 */ onShareTimeline() { - const elapsed = this.data.completionElapsed || this.data.duration + const elapsed = this.data.completionActualElapsed || this.data.duration return { title: config.share.timer.timelineTitleTemplate.replace('{elapsed}', elapsed) } diff --git a/utils/cloud.js b/utils/cloud.js index 4d11ced..d1e4e73 100644 --- a/utils/cloud.js +++ b/utils/cloud.js @@ -176,6 +176,7 @@ const _doPush = async () => { if (openid) { const existing = await db.collection(DB_COLLECTION) .where({ _openid: openid }) + .orderBy('updatedAt', 'desc') // 与 pullAll 一致,避免命中最旧文档 .limit(1) .get() if (existing && existing.data && existing.data.length > 0) { diff --git a/utils/storage.js b/utils/storage.js index a59a2e2..6567c01 100644 --- a/utils/storage.js +++ b/utils/storage.js @@ -96,8 +96,8 @@ const deleteRecord = (recordId) => { }) if (!found) return // id not found, don't overwrite storage wx.setStorageSync(RECORDS_KEY, records) - // Re-validate streak: deleting the last record for a day should break the streak - validateStreak() + // 重新计算连续打卡:删连续链中间某天会断链,validateStreak 只在 lastDate 被删时重算,不够 + recomputeStreak() cloud.pushAll() } @@ -435,6 +435,7 @@ module.exports = { validateStreak, recomputeStreak, updateStreak, + _markLocalChanged, getToday, getDateOffset, getTodayRecord diff --git a/utils/theme.js b/utils/theme.js index 9f8b105..9ceec6b 100644 --- a/utils/theme.js +++ b/utils/theme.js @@ -96,6 +96,8 @@ const setTheme = (id) => { const app = getApp() if (app && app.globalData) app.globalData.theme = theme + // 标记本地已改动,避免下次启动云恢复用旧 themeId 覆盖刚选的主题 + try { require('./storage')._markLocalChanged() } catch (e) {} // sync to cloud (lazy-require to avoid circular deps) try { require('./cloud').pushAll() } catch (e) {} return theme