ai-clone/frontend-ai/unpackage/dist/build/mp-weixin/utils/request.js

2 lines
1.2 KiB
JavaScript

"use strict";const e=require("../common/vendor.js"),t=require("../config/api.js");let o=!1,n=[];const r=a=>new Promise(((d,i)=>{const c=e.index.getStorageSync("token"),h={"Content-Type":"application/json",...a.header};c&&(h.Authorization=`Bearer ${c}`),e.index.request({url:t.API_BASE+a.url,method:a.method||"GET",data:a.data||{},header:h,success:t=>{200===t.statusCode?d(t.data):401===t.statusCode?o?n.push((()=>{r(a).then(d).catch(i)})):(o=!0,s().then((e=>{o=!1,r(a).then(d).catch(i),n.forEach((e=>e())),n=[]})).catch((t=>{o=!1,n=[],e.index.showToast({title:"登录已过期,请重新登录",icon:"none"}),setTimeout((()=>{e.index.reLaunch({url:"/pages/login/login"})}),1500),i(t)}))):i(t)},fail:e=>{i(e)}})})),s=()=>new Promise(((o,n)=>{const r=e.index.getStorageSync("refreshToken");r?e.index.request({url:t.API_BASE+"/api/users/refresh-token",method:"POST",data:{refreshToken:r},success:t=>{if(200===t.statusCode&&t.data.success){const n=t.data.data.token,r=t.data.data.refreshToken;e.index.setStorageSync("token",n),e.index.setStorageSync("refreshToken",r),o(n)}else n(new Error("Refresh token failed"))},fail:e=>{n(e)}}):n(new Error("No refresh token"))}));exports.post=(e,t={},o={})=>r({url:e,method:"POST",data:t,header:o});