mtl-js-sdk
Version:
126 lines (102 loc) • 3.7 kB
JavaScript
;
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
;
(function () {
var instance;
var initialized = false;
var util = {
isObject: function isObject(o) {
return Object.prototype.toString.call(o) === '[object Object]';
}
};
function initWebViewJavascriptBridge(callback) {
if (initialized) {
console.log("init has been called.");
} else {
window.WebViewJavascriptBridge.init(function (message, responseCallback) {});
}
initialized = true;
typeof callback === 'function' && callback();
}
;
function YYEsnBridge() {
this.version = '1.0.0';
}
;
YYEsnBridge.prototype.ready = function (callback) {
if (window.WebViewJavascriptBridge) {
initWebViewJavascriptBridge(callback);
} else {
document.addEventListener('WebViewJavascriptBridgeReady', function () {
initWebViewJavascriptBridge(callback);
}, false);
}
};
YYEsnBridge.prototype.config = function (parameters, callback) {
if (!util.isObject(parameters)) {
throw new Error('参数格式不正确');
}
if (!parameters.nonceStr || !parameters.timeStamp || !parameters.jssdkSignature || !parameters.agentId) {
throw new Error('必要参数不存在');
}
parameters.fail = function (res) {
alert(res.error_description || 'config接口调用错误');
};
this["do"]('jsAuthority', parameters, callback);
};
YYEsnBridge.prototype.registerHandler = function (parameters) {
if (!util.isObject(parameters)) {
throw new Error('参数格式不正确');
}
for (var key in parameters) {
if (Object.prototype.hasOwnProperty.call(parameters, key)) {
window.WebViewJavascriptBridge.registerHandler(key, parameters[key]);
}
}
};
YYEsnBridge.prototype["do"] = function (action, parameters) {
if (action === '' || typeof action !== 'string') {
throw new Error('参数格式不正确');
}
if (!util.isObject(parameters)) {
parameters = {};
}
try {
window.WebViewJavascriptBridge.callHandler(action, parameters, function (res) {
var resultData = {};
try {
if (!util.isObject(res)) {
res = JSON.parse(res);
}
if (res.error_code === '0') {
resultData = res.data;
typeof parameters.success === 'function' && parameters.success(resultData);
} else {
resultData.errCode = res.error_code;
resultData.errDescription = res.error_description;
typeof parameters.fail === 'function' && parameters.fail(resultData);
}
} catch (e) {
resultData.errCode = '1002';
resultData.errDescription = 'data parse error';
typeof parameters.fail === 'function' && parameters.fail(resultData);
}
typeof parameters.complete === 'function' && parameters.complete(resultData);
});
} catch (e) {
throw new Error('参数格式不正确');
}
};
if (!instance) {
instance = new YYEsnBridge();
}
if (typeof define === 'function' && _typeof(define.amd) === 'object' && define.amd) {
define(function () {
return instance;
});
} else if (typeof module !== 'undefined' && module.exports) {
module.exports.YYEsnBridge = instance;
} else {
window.YYEsnBridge = instance;
}
})();