fix(frontend): clear all daily_login_completed_* keys on logout
登出时清理 daily_login 本地缓存的 key 写错:实际清的是
daily_login_completed_${today},但 Header.vue 写入的 key 是
daily_login_completed_${date}_${uid}_${starId},格式不匹配导致
根本没清掉任何东西,跨账号/重装场景会留旧去重残留,新一天本应触发
的 daily_login 上报被本地 cache 误判成'已报'。
改成模糊匹配所有 daily_login_completed_*(uni 没有'按前缀删'接口,
getStorageInfoSync + filter + 循环 remove,模式同
utils/preloadApi/storage.js#clearForUser)。
注:daily_login 仍保留前端去重(spec §3 要求);其他 daily 任务
(daily_browse_asset / daily_place_asset) 本来就没前端去重,完全
靠后端 ProcessTaskEvent 幂等(status=completed/claimed 跳过)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
89d5d12450
commit
ab1810e433
@ -97,9 +97,19 @@ const mutations = {
|
||||
uni.removeStorageSync('login_mobile')
|
||||
// 清除 gallery_owner_id
|
||||
uni.removeStorageSync('gallery_owner_id')
|
||||
// 清除每日登录打卡记录
|
||||
const today = new Date().toISOString().split('T')[0]
|
||||
uni.removeStorageSync(`daily_login_completed_${today}`)
|
||||
// 清除每日登录打卡记录(模糊匹配所有 daily_login_completed_*,避免 key 格式拼接错位)
|
||||
// Header.vue 写入的 key 是 daily_login_completed_${date}_${uid}_${starId},
|
||||
// 按单日 key 删除会漏清历史/跨账号残留,必须按前缀清。
|
||||
// 注意:uni 没有"按前缀删"接口,需 getStorageInfoSync 拿所有 key 后过滤(同 preloadApi/storage.js#clearForUser 模式)
|
||||
try {
|
||||
const info = uni.getStorageInfoSync()
|
||||
const toRemove = (info.keys || []).filter((k) => k.startsWith('daily_login_completed_'))
|
||||
toRemove.forEach((k) => {
|
||||
try { uni.removeStorageSync(k) } catch (_) { /* skip 单个失败 */ }
|
||||
})
|
||||
} catch (e) {
|
||||
console.warn('[user/logout] clear daily_login cache failed:', e)
|
||||
}
|
||||
|
||||
// 重置 TopfansWelcome 相关标记,让登出后再登录(quickLogin / 注册)能再次展示欢迎页
|
||||
// 同时清掉 storage 和内存标记,避免 password 登录误触发(见 store/modules/user.js 注释表)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user