@sinosun/lib
Version:
sinosun jsbridge and net toolkit
303 lines (239 loc) • 8.21 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
require("core-js/modules/es.regexp.constructor.js");
require("core-js/modules/es.regexp.exec.js");
require("core-js/modules/es.regexp.to-string.js");
require("core-js/modules/es.string.match.js");
require("core-js/modules/es.string.search.js");
require("core-js/modules/es.string.split.js");
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
var _setPrototypeOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/set-prototype-of"));
var _create = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/create"));
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind"));
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
var __extends = void 0 && (void 0).__extends || function () {
var _extendStatics = function extendStatics(d, b) {
_extendStatics = _setPrototypeOf["default"] || {
__proto__: []
} instanceof Array && function (d, b) {
d.__proto__ = b;
} || function (d, b) {
for (var p in b) {
if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
}
};
return _extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
_extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
};
}();
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
return mod && mod.__esModule ? mod : {
"default": mod
};
};
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
/**
* @author miaoju
* @description 兆日浏览器的jsbridge实现类
*/
var IJsBridge_1 = __importDefault(require("../IJsBridge"));
var WebViewJavascriptBridge_1 = __importDefault(require("./WebViewJavascriptBridge"));
var SnJsBridgeImpl =
/** @class */
function (_super) {
__extends(SnJsBridgeImpl, _super);
function SnJsBridgeImpl() {
return _super !== null && _super.apply(this, arguments) || this;
} //通用JSBridgeReady事件 Promise 版,
SnJsBridgeImpl.prototype.PromiseJSBridgeReady = function (callback) {
// 如果 jsbridge 已经注入则直接调用
if (window.WebViewJavascriptBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('SnJSBridgeReady', function () {
callback && callback();
}, false);
}
};
/**
* 调用native jsbridge接口
* @param {*} method 接口名称
* @param {*} data 参数对象
*/
SnJsBridgeImpl.prototype.callHandler = function (method, data) {
var _this = this;
return new _promise["default"](function (resolve) {
_this.PromiseJSBridgeReady(function () {
WebViewJavascriptBridge_1["default"].callHandler(method, data, function (responseData) {
try {
if (responseData) {
resolve(JSON.parse(responseData));
}
} catch (e) {
resolve(responseData);
}
});
});
});
};
/**
* 注册app端提供的监听事件
* @param {*}} method
* @param {*} callback
*/
SnJsBridgeImpl.prototype.registerHandler = function (method, callback) {
this.PromiseJSBridgeReady(function () {
return WebViewJavascriptBridge_1["default"].registerHandler(method, function (data) {
callback(data);
});
});
};
/**
* 打开页面
* @param {*} url
*/
SnJsBridgeImpl.prototype.openPage = function (url) {
window.open(url);
};
/**
* 注册title栏菜单
* @param {*} menuList
*/
SnJsBridgeImpl.prototype.registerMenu = function (menuList) {
var _context;
WebViewJavascriptBridge_1["default"].callHandler('RegisterMenuFunction', menuList);
WebViewJavascriptBridge_1["default"].registerHandler('clickMenuCallBack', (0, _bind["default"])(_context = function _context(data) {
var dataJson = data;
if ((0, _typeof2["default"])(data) !== 'object') {
dataJson = JSON.parse(data);
} // 找出menuList中的与注册事件对应的函数并且执行
if (menuList) {
//取对应的func执行
for (var i = 0; i < menuList.length; i++) {
if (dataJson.menuId === menuList[i].menuId && menuList[i].func) {
menuList[i].func();
break;
}
}
}
}).call(_context, this));
};
/**
* 调用app回退事件
* @param {*} url
* @param {*} backSteps
* @param {*} loadData
*/
SnJsBridgeImpl.prototype.goBack = function (url, backSteps, loadData) {
var data = {
loadData: '',
url: url
};
if (backSteps) {
data.backSteps = backSteps;
}
if (loadData) {
data.loadData = loadData;
}
WebViewJavascriptBridge_1["default"].callHandler('goBackFunction', (0, _stringify["default"])(data));
}; //如果有参数则返回具体的某个key对应值,如果没有参数则返回url中的参数对象
SnJsBridgeImpl.prototype.getUrlParam = function (key, urlParams) {
if (urlParams === void 0) {
urlParams = {};
}
if (key) {
var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return decodeURI(r[2]);
return null; //返回参数值
} else {
var regexP = /[^#&\?]+=[^#&\?]*/ig;
var ms = window.location.href.match(regexP);
if (ms) {
for (var i = 0; i < ms.length; i++) {
var arr = ms[i].split('=');
try {
arr[1] = decodeURI(decodeURIComponent(arr[1]));
} catch (e) {
arr[1] = decodeURIComponent(arr[1]);
}
urlParams[arr[0]] = arr[1];
}
}
return urlParams;
}
}; //小应用地址可以配置全,不用做任何处理
SnJsBridgeImpl.prototype.openAppRoute = function () {};
SnJsBridgeImpl.prototype.fileUploadFunction = function () {
return new _promise["default"](function (res) {
res({
ret: 'H5'
});
});
}; //选择联系人
SnJsBridgeImpl.prototype.selectContact = function (data) {
var selectType = data.selectType,
selectId = data.selectId;
var dataList = [{
key: "from_key",
value: 9,
type: "int"
}, {
key: "select_model",
value: selectType + "",
type: "string"
}, {
key: "selected_list_tpay",
value: (0, _stringify["default"])(selectId),
type: "string"
}];
var selectJson = {
action: "IntentAction_SelectContactWithOrgListActivity",
dataList: dataList,
responseKeyList: [{
key: "addusers_tpay",
value: "",
type: "string"
}]
};
return WebViewJavascriptBridge_1["default"].callHandler('OpenActionFunction', selectJson);
}; //扫描二维码
SnJsBridgeImpl.prototype.scanQrcode = function () {
var Json = {
action: 'action_common_qrcode_scan',
dataList: [{
key: 'userid',
value: 'abc1',
type: "string"
}, {
key: 'userid',
value: 'abc2',
type: "string"
}, {
key: 'userid',
value: 'abc3',
type: "string"
}],
responseKeyList: [{
key: 'qrcode',
value: '',
type: 'string'
}]
};
return WebViewJavascriptBridge_1["default"].callHandler('OpenActionFunction', Json);
};
return SnJsBridgeImpl;
}(IJsBridge_1["default"]);
exports["default"] = SnJsBridgeImpl;