UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

85 lines (82 loc) 3.94 kB
import _classCallCheck from '@babel/runtime/helpers/classCallCheck'; import _createClass from '@babel/runtime/helpers/createClass'; import { NEED_LOGIN_RET, ACCESS_DENIED_RET } from '../../config.mjs'; /** * 归一化响应码/文案拦截器 * * - ret / r 统一为 r * - err_desc / err_msg 统一成 msg(URL decode + 去 +) * - r=100000(NeedLogin)清空 msg(由 decorator 负责重试,不 toast) * - r=100006(AccessDenied)清空 msg + 触发业务方注入的 onAccessDenied 回调 * * 参考 pmd-npm/packages/business/src/network/interceptor/response/common/normalizeResponseRetInterceptor.ts */ var NormalizeResponseRetInterceptor = /*#__PURE__*/function () { function NormalizeResponseRetInterceptor(options) { _classCallCheck(this, NormalizeResponseRetInterceptor); this.options = options; } return _createClass(NormalizeResponseRetInterceptor, [{ key: "interceptor", value: function interceptor(param) { var _a, _b, _c, _d, _e, _f; var data = (_a = param.response) === null || _a === void 0 ? void 0 : _a.data; if (data && data.r === undefined) { if (data.ret === undefined || data.ret === null) { data.r = 0; } else { data.r = data.ret; } } // err_desc / err_msg 归一成 msg if (data && !data.msg && data.err_desc && data.err_desc !== '') { data.err_desc = String(data.err_desc).replace(/\+/g, ' '); try { data.msg = decodeURIComponent(data.err_desc); } catch (_g) { data.msg = data.err_desc; } } else if (data && !data.msg && data.err_msg && data.err_msg !== '') { try { data.msg = decodeURIComponent(data.err_msg); } catch (_h) { data.msg = data.err_msg; } } else if (data === null || data === void 0 ? void 0 : data.msg) ; else if (data && +data.r !== 0) { data.msg = "\u8BF7\u6C42\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\uFF08#".concat(data.r, "\uFF09"); } // 需要登录的错误,去掉 toast 文案(由 decorator 处理重试) if (data && +data.r === NEED_LOGIN_RET) { data.msg = ''; (_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.loginMp) === null || _c === void 0 ? void 0 : _c.call(_b); } // 访问被拒的错误(ret=100006),清空 msg 避免兜底 toast, // 由业务方注入的 onAccessDenied 决定后续动作(典型场景:跳 H5 申请页 / 弹原生 modal / 重启小游戏等) if (data && +data.r === ACCESS_DENIED_RET) { data.msg = ''; var cb = (_d = this.options) === null || _d === void 0 ? void 0 : _d.onAccessDenied; if (typeof cb === 'function') { try { // 异步执行,框架不阻塞响应链;异常也吃掉避免影响业务方 // (onAccessDenied 通常是 IO 调用,业务方自己 try/catch) var ret = cb(param); if (ret && typeof ret.then === 'function') { (_f = (_e = ret)["catch"]) === null || _f === void 0 ? void 0 : _f.call(_e, function (e) { // eslint-disable-next-line no-console console.warn('[pmd-api-cocos/network] onAccessDenied rejected:', e); }); } } catch (e) { // eslint-disable-next-line no-console console.warn('[pmd-api-cocos/network] onAccessDenied threw:', e); } } else { // eslint-disable-next-line no-console console.warn("[pmd-api-cocos/network] \u6536\u5230 r=".concat(ACCESS_DENIED_RET, "\uFF08\u8BBF\u95EE\u88AB\u62D2\uFF09\u4F46\u672A\u6CE8\u5165 onAccessDenied \u56DE\u8C03\uFF0C") + '请在 initCocosNetwork({ onAccessDenied }) 中配置(如打开 H5 申请页)。'); } } return [false, param]; } }]); }(); export { NormalizeResponseRetInterceptor };