Add immediate startup login and loading states for mini program home
ci-cd / verify (push) Successful in 5s
ci-cd / deploy (push) Skipped

This commit is contained in:
2026-10-05 11:03:33 +08:00
parent 4916c31edd
commit 42aea10101
15 changed files with 623 additions and 44 deletions
+12 -7
View File
@@ -6,23 +6,29 @@ function request(path, method = "GET", data, auth = true) {
url: baseURL + path,
method,
data,
timeout: 15000,
header: token && auth ? { Authorization: "Bearer " + token } : {},
success(res) {
if (res.data && res.data.code === 0) resolve(res.data.data);
else {
if (res.statusCode === 401) {
wx.removeStorageSync("pet_token");
getApp().globalData.token = "";
}
if (res.statusCode === 401 && auth) invalidateToken(token);
const error = new Error((res.data && res.data.message) || "请求失败");
error.status = res.statusCode;
reject(error);
}
},
fail: reject,
fail: () => reject(new Error("网络连接失败,请检查网络后重试")),
});
});
}
function invalidateToken(usedToken) {
const app = getApp();
// A late response using the old token must not clear a newly refreshed session.
if (app.globalData.token && app.globalData.token !== usedToken) return;
wx.removeStorageSync("pet_token");
app.globalData.token = "";
app.globalData.user = null;
}
async function secure(path, method, data) {
await getApp().login();
try {
@@ -53,6 +59,7 @@ function uploadOnce(path) {
else {
const error = new Error(body.message || "上传失败");
error.status = res.statusCode;
if (res.statusCode === 401) invalidateToken(token);
reject(error);
}
} catch (e) {
@@ -69,8 +76,6 @@ async function upload(path) {
return await uploadOnce(path);
} catch (error) {
if (error.status !== 401) throw error;
wx.removeStorageSync("pet_token");
getApp().globalData.token = "";
await getApp().login();
return uploadOnce(path);
}