Add immediate startup login and loading states for mini program home
This commit is contained in:
+12
-7
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user