UNPKG

antui-mobile

Version:
125 lines (94 loc) 3.62 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Native = undefined; var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _baseevent = require('../baseevent'); var _storage = require('../../utils/storage'); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var EVENT_COUNT = 0; var Native = exports.Native = function Native() { var _this = this; var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { func: function func() {}, defaultParam: {}, nameCB: "" }; (0, _classCallCheck3.default)(this, Native); this.activate = function (param) { var device = _storage.Session.getAttribute("device"); return new _promise2.default(function (resolve, reject) { (0, _baseevent.once)(_this.NATIVE_IDENT, function (res) { return _this.handleData(res, device, resolve, reject); }); var _p = (0, _objectAssign2.default)({}, _this.defaultParam, param); var paramStr = null; if ((0, _keys2.default)(_p).length) { paramStr = (0, _stringify2.default)(_p); } if (_this.method[device]) { if ((0, _typeof3.default)(window.callback) === "object") { paramStr ? window.callback[_this.method[device]](paramStr) : window.callback[_this.method[device]](); } else { paramStr ? window[_this.method[device]](paramStr) : window[_this.method[device]](); } } else { return reject(new TypeError("not fount method of device:" + device)); } }); }; this.deactivate = function () {}; this.handleData = function (res, device, resolve, reject) { var data = null; try { if (typeof res === "string") { data = JSON.parse(window.atob(res)); } else if ((typeof res === 'undefined' ? 'undefined' : (0, _typeof3.default)(res)) === "object") { data = res; } else { throw TypeError("return type only is string or object!"); } } catch (e) { throw e; } return resolve(data); }; if (opts === null) { throw new TypeError("opts is required object!"); } if (!opts.nameCB || !opts.func) { throw new TypeError("opts set error!"); } if ((0, _typeof3.default)(opts.defaultParam) === "object") { this.defaultParam = opts.defaultParam; } if (opts.func) { this.method = {}; if (typeof opts.func === "string") { this.method.ios = this.method.android = opts.func; } else if ((0, _typeof3.default)(opts.func) === "object" && (!!opts.func.ios || !!opts.func.android)) { this.method = opts.func; } else { throw new TypeError("func set error!"); } } this.NATIVE_IDENT = "NATIVE_" + EVENT_COUNT++; window[opts.nameCB] = function (res) { (0, _baseevent.trigger)(_this.NATIVE_IDENT, res); }; } // 需要自定义反回数据的在子类中重写这个方法, 并反回resolve或reject ; exports.default = Native;