7093e6517d
token 过期后小程序静默白屏(影响所有用户) - JWT 有效期 7 天,过期后 40100 只 clearToken 不重新登录,而 store.ready 的 promise 已缓存不会重跑,加上 23 处静默 catch, 用户看到的是「什么都没有、也没有任何提示」,只能重启小程序 - request 层加 token 失效钩子:自动重新登录并重试一次(只重试一次, 防止登录接口本身故障时死循环);store 注册钩子重置引导缓存 - 补 15s 请求超时、60s 上传超时,超时给明确文案(原先默认 60s 卡住无反馈) 请求翻倍 - 每个 tab 页同时用 store.subscribe 和 onShow→ready().then() 加载, 而 ready() 内部 loadPets 会 notify 触发 subscriber,首次进入请求翻倍 - subscriber 改为只处理「切换宠物 / 数据变更」,首次加载交给 onShow - 首页 bind:save 与组件实际触发的 saved 事件名不一致,onSheetSave 从未生效;一并修正,并去掉关闭弹层时的全量重载 失败伪装成空态 - 社区请求失败时显示「还没有帖子,来发第一条吧」,把故障说成没数据。 改为区分「加载失败(可点击重试)」「关注 tab 为空」「确实没有帖子」 - 新增 utils/ui.js 统一错误提示(同文案 3 秒内去重,避免并发失败刷屏), 首页与记录页主数据加载失败不再静默 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
16 lines
561 B
JavaScript
16 lines
561 B
JavaScript
// 轻量 UI 提示:统一错误反馈,避免请求失败时页面一片空白、用户不知道发生了什么。
|
|
let lastMsg = '';
|
|
let lastAt = 0;
|
|
|
|
// 提示错误。相同文案 3 秒内不重复弹,避免多个并发请求同时失败时刷屏。
|
|
function toastErr(e, fallback) {
|
|
const msg = (e && e.message) || fallback || '加载失败';
|
|
const now = Date.now();
|
|
if (msg === lastMsg && now - lastAt < 3000) return;
|
|
lastMsg = msg;
|
|
lastAt = now;
|
|
wx.showToast({ title: msg, icon: 'none', duration: 2000 });
|
|
}
|
|
|
|
module.exports = { toastErr };
|