UNPKG

t-comm

Version:

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

94 lines (87 loc) 4.42 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _classCallCheck = require('@babel/runtime/helpers/classCallCheck'); var _createClass = require('@babel/runtime/helpers/createClass'); var cocos_network_config = require('../../config.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck); var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass); /** * 归一化响应码/文案拦截器 * * - 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__default["default"](this, NormalizeResponseRetInterceptor); this.options = options; } return _createClass__default["default"](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 === cocos_network_config.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 === cocos_network_config.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(cocos_network_config.ACCESS_DENIED_RET, "\uFF08\u8BBF\u95EE\u88AB\u62D2\uFF09\u4F46\u672A\u6CE8\u5165 onAccessDenied \u56DE\u8C03\uFF0C") + '请在 initCocosNetwork({ onAccessDenied }) 中配置(如打开 H5 申请页)。'); } } return [false, param]; } }]); }(); exports.NormalizeResponseRetInterceptor = NormalizeResponseRetInterceptor;