@molejs/mole-jssdk
Version:
mole app jssdk
699 lines (634 loc) • 19 kB
JavaScript
function dingTalkPolyfill () {
return {
openNewPage: function openNewPage(_ref) {
var url = _ref.url;
window.dd.biz.util.openLink({
url: url });
},
get version() {
return window.dd.version;
}
};
}
var ua = window.navigator.userAgent;
function dynamicLoadJs(url, callback) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
if (typeof callback == 'function') {
script.onload = script.onreadystatechange = function () {
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
callback();
script.onload = script.onreadystatechange = null;
}
};
}
head.appendChild(script);
}
var platform = {
get iPhoneX() {
return (/iphone/gi.test(ua) && screen.height == 812 && screen.width == 375
);
},
get iPhoneXR() {
return (/iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 2 && window.screen.width === 414 && window.screen.height === 896
);
},
get iPhoneXSMax() {
return (/iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 3 && window.screen.width === 414 && window.screen.height === 896
);
},
get os() {
if (ua.match(/(Android);?[\s\/]+([\d.]+)?/)) {
return 'android';
} var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/);
if (ipad || iphone || ipod) return 'ios';
return '';
},
get container() {
if (ua.toLowerCase().match(/upaasapp/i)) return 'italent';
if (ua.toLowerCase().match(/tita/i)) return 'tita';
if (ua.match(/DingTalk/i)) return 'dingTalk';
if (ua.match(/MicroMessenger/i)) return 'wechart';
if (ua.match(/wxwork/i)) return 'wxwork';
return 'browser';
},
get OS() {
if (ua.match(/(Android);?[\s\/]+([\d.]+)?/)) {
return 'android';
} var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/);
if (ipad || iphone || ipod) return 'ios';
return '';
},
get ShellName() {
if (ua.toLowerCase().match(/upaasapp/i)) return 'italent';
if (ua.toLowerCase().match(/tita/i)) return 'tita';
if (ua.match(/DingTalk/i)) return 'dingTalk';
if (ua.match(/MicroMessenger/i)) return 'wechart';
if (ua.match(/wxwork/i)) return 'wxwork';
return 'browser';
},
get web() {
if (/mobile|android|iphone|ipad|phone/i.test(ua) && !platform.bsAppAndroid && !platform.bsAppIOS) {
return true;
}
return false;
},
get ios() {
return platform.os === 'ios';
},
get android() {
return platform.os === 'android';
},
get weixin() {
return !!ua.match(/MicroMessenger/i);
},
get weixinWork() {
return !!ua.match(/wxwork/i);
},
get bsAppIOS() {
return !!ua.toLowerCase().match(/beisen/i) && platform.ios && platform.apiCloud;
},
get beisenApp() {
return platform.bsAppIOS || platform.bsAppAndroid;
},
get bsAppAndroid() {
return !!ua.toLowerCase().match(/beisen/i) && platform.android;
},
get apiCloud() {
return !!ua.toLowerCase().match(/apicloud/i);
},
get titaApp() {
return !!ua.toLowerCase().match(/tita/i);
},
get titav2App() {
return !!ua.match(/Titav2/i);
},
get upaasApp() {
return !!ua.toLowerCase().match(/upaasapp/i);
},
get dingTalk() {
return !!ua.match(/DingTalk/i);
},
get bayer() {
return !!ua.match(/Bayer/i);
},
get iTalentIOS() {
return platform.ios && platform.apiCloud && platform.upaasApp;
},
get iTalentAndroid() {
return platform.android && platform.upaasApp;
},
get iTalentWeb() {
return false;
},
get api() {
return platform.bsAppIOS ? window.api || window.top.api || {} : window.BSJSBridge;
},
waitApi: function waitApi() {
var t = void 0;
return new Promise(function (reslove, reject) {
if (!!ua.match(/DingTalk/i)) {
return dynamicLoadJs('//g.alicdn.com/dingding/dingtalk-jsapi/2.3.0/dingtalk.open.js', function () {
window.api = dingTalkPolyfill(window.dd);
return reslove({});
});
}
if (platform.bsAppAndroid) {
if (window.BSJSBridge || window.parent.BSJSBridge) {
return reslove({
api: window.BSJSBridge || window.parent.BSJSBridge
});
}
t = setInterval(function () {
if (window.BSJSBridge || window.parent.BSJSBridge) {
clearInterval(t);
return reslove({
api: window.BSJSBridge || window.parent.BSJSBridge
});
}
}, 16);
} else if (platform.bsAppIOS) {
if (window.api || window.parent.api) {
return reslove({
api: window.api || window.parent.api
});
}
t = setInterval(function () {
if (window.api || window.parent.api) {
clearInterval(t);
return reslove({
api: window.api || window.parent.api
});
}
}, 16);
} else {
return reslove({});
}
});
},
waitApiV2: function waitApiV2() {
var t = void 0;
return new Promise(function (reslove, reject) {
if (platform.dingTalk) {
return dynamicLoadJs('//g.alicdn.com/dingding/dingtalk-jsapi/2.3.0/dingtalk.open.js', function () {
window.api = dingTalkPolyfill(window.dd);
return reslove({});
});
}
if (platform.bsAppAndroid) {
if (window.bsapi || window.parent.bsapi) {
return reslove({
api: window.bsapi || window.parent.bsapi
});
}
t = setInterval(function () {
if (window.bsapi || window.parent.bsapi) {
clearInterval(t);
return reslove({
api: window.bsapi || window.parent.bsapi
});
}
}, 16);
} else if (platform.bsAppIOS) {
if (window.api || window.parent.api) {
return reslove({
api: window.api || window.parent.api
});
}
t = setInterval(function () {
if (window.api || window.parent.api) {
clearInterval(t);
return reslove({
api: window.api || window.parent.api
});
}
}, 16);
}
});
},
select: function select() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var mobile = params.mobile,
androidApp = params.androidApp,
iosApp = params.iosApp,
beisenApp = params.beisenApp,
weixin = params.weixin,
weixinWork = params.weixinWork,
dingTalk = params.dingTalk;
var cb = void 0;
if (platform.bsAppIOS && iosApp) {
cb = iosApp;
} else if (platform.bsAppAndroid && androidApp) {
cb = androidApp;
} else if (platform.dingTalk && dingTalk) {
cb = dingTalk;
} else if (platform.weixin && weixin) {
cb = weixin;
} else if (platform.weixinWork && weixinWork) {
cb = weixinWork;
} else {
cb = mobile;
}
if (platform.beisenApp && beisenApp) {
cb = beisenApp;
}
if (typeof cb === 'function') {
return cb();
}
}
};
function getItem() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var key = params.key;
return platform.select({
mobile: function mobile() {
var storage = window.localStorage;
return storage.getItem(key);
},
iosApp: function iosApp() {
return window.api.getPrefs({
key: key,
sync: true
});
},
androidApp: function androidApp() {
return window.BSLocalStorage.getBSData(key);
}
});
}
function dynamicLoadJs$1(url, callback) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
if (typeof callback == 'function') {
script.onload = script.onreadystatechange = function () {
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
callback();
script.onload = script.onreadystatechange = null;
}
};
}
head.appendChild(script);
}
function getJSBridge() {
var t = void 0;
var count = 0;
return new Promise(function (reslove, reject) {
if (platform.dingTalk) {
return dynamicLoadJs$1('//g.alicdn.com/dingding/dingtalk-jsapi/2.3.0/dingtalk.open.js', function () {
return reslove({});
});
}
if (platform.bsAppAndroid) {
if (window.BSJSBridge) {
return reslove({
api: window.BSJSBridge
});
}
t = setInterval(function () {
count++;
if (window.BSJSBridge) {
clearInterval(t);
count = 0;
return reslove({
api: window.BSJSBridge
});
}
if (count <= 300) {
clearInterval(t);
count = 0;
return reslove({
api: window.BSJSBridge
});
}
}, 20);
} else if (platform.bsAppIOS) {
if (window.api) {
count = 0;
return reslove({
api: window.api
});
}
t = setInterval(function () {
count++;
if (window.api) {
count = 0;
clearInterval(t);
return reslove({
api: window.api
});
}
if (count >= 500) {
clearInterval(t);
count = 0;
return reject();
}
}, 20);
} else {
return reslove({});
}
});
}
function getApi() {
return platform.select({
iosApp: function iosApp() {
return window.api || window.parent.api;
},
androidApp: function androidApp() {
return window.BSJSBridge || window.parent.BSJSBridge;
}
});
}
function notify() {
var param = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var cb = arguments[1];
getApi().callHandler('bs-droid-event', {
param: param
}, function (ret, err) {
return cb && cb(window.JSON.parse(ret), err);
});
}
var hostAlias = {
tm: 'tm',
italent: 'www',
cloud: 'cloud',
setting: 'setting',
ocean: 'ocean',
account: 'account',
biset: 'biset',
appcenter: 'appcenter',
robot: 'robot',
operationCloud: 'operation-cloud',
appstore: 'appstore',
approval: 'approval',
tms: 'tms',
devCloud: 'dev-cloud',
settingCloud: 'setting-cloud',
docCloud: 'doc-cloud',
landingsite: 'landingsite',
service: 'service'
};
function warining(msg) {
if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') {
throw TypeError("\u3010@beisen/helper\u3011:" + msg);
}
return window.console && window.console.warn("\u3010@beisen/helper\u3011:" + msg);
}
var Utils = {
// 私有 拼接host
generateHost: function (host, domain) {
return "//" + host + "." + domain;
},
getBSGlobal: function (key, defaultValue) {
return BSGlobal[key] || defaultValue;
},
getEnv: function () {
return this.getBSGlobal('env', 'production');
},
getBSGlobalDomain: function () {
var domain = this.getBSGlobal('domain');
if (!domain || typeof domain !== 'string') {
return warining('请检查BSGlobal.domain是否存在或者是否为string类型!');
}
return domain;
},
getBSGlobalEnv: function () {
var env = this.getBSGlobal('env', 'production');
if (!env || typeof env !== 'string') {
return warining('请检查BSGlobal.env是否存在或者是否为string类型!');
}
return env;
}
};
var index = {
getBSGlobal: function (key) {
return Utils.getBSGlobal(key);
},
// 登录人信息
getUserInfo: function () {
return Utils.getBSGlobal('loginUserInfo');
},
// 租户信息
getTenantInfo: function () {
return Utils.getBSGlobal('tenantInfo');
},
// 用户id
getUserId: function () {
var userInfo = this.getUserInfo() || {};
return userInfo.Id || userInfo.id || userInfo.UserId;
},
// 租户id
getTenantId: function () {
var tenant = this.getTenantInfo() || {};
return tenant.Id || tenant.tenant_id || tenant.tenantId || this.getUserInfo().TenantID;
},
// 生成域名
generateHost: function (host) {
var domain = Utils.getBSGlobalDomain();
if (!domain) {
return;
}
return Utils.generateHost(host, domain);
},
// 获取平台域名
getHostByType: function (type) {
if (type === void 0) {
type = 'cloud';
}
var domain = Utils.getBSGlobalDomain();
if (!domain) {
return;
}
var host = hostAlias[type];
if (!host) {
return warining("\u8BF7\u786E\u8BA4type\u4E3A" + type + "\u662F\u5426\u5408\u6CD5");
}
return Utils.generateHost(host, domain);
},
env: {
isDevelopment: function () {
var env = Utils.getBSGlobalEnv();
return (/development/ig.test(env) || /develop/ig.test(env)
);
},
isTesting: function () {
var env = Utils.getBSGlobalEnv();
return (/testing/ig.test(env) || /test/ig.test(env)
);
},
isProduction: function () {
return (/production/ig.test(Utils.getBSGlobalEnv())
);
}
}
};
var versionToNum = function versionToNum(version) {
var a = version.toString();
var c = a.split('.');
if (c.length > 3) {
c = c.slice(0, 3);
} else {
while (c.length < 3) {
c.push('0');
}
}
var num_place = ['', '0', '00', '000', '0000'];
var r = num_place.reverse();
for (var i = 0; i < c.length; i++) {
var len = c[i].length;
c[i] = String(r[len]) + String(c[i]);
}
var res = c.join('');
return res;
};
function version() {
return platform.select({
mobile: function mobile() {
return '0.0.0';
},
iosApp: function iosApp() {
return window.navigator.userAgent.toLowerCase().match(/upaasapp\/([\d.]+)/)[1] || '0.0.0';
},
androidApp: function androidApp() {
if (window.navigator.userAgent.toLowerCase().match(/upaasapp\/([\d.]+)/)) {
return window.navigator.userAgent.toLowerCase().match(/upaasapp\/([\d.]+)/)[1];
}
return '0.0.0';
}
});
}
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
var _extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (search, this_len) {
if (this_len === undefined || this_len > this.length) {
this_len = this.length;
}
return this.substring(this_len - search.length, this_len) === search;
};
}
var serializeParams = function serializeParams(url, params) {
if ((typeof params === 'undefined' ? 'undefined' : _typeof(params)) === 'object') {
for (var key in params) {
var str = key + '=' + params[key];
if (url.includes('?')) {
if (url.endsWith('&')) {
url += str;
} else {
url += '&' + str;
}
} else {
url += '?' + str;
}
}
}
return url;
};
var envDomainMap = {
'dev': 'http://appcenter.italent-inc.cn',
'test': 'https://appcenter.italent.link',
'prod': 'https://appcenter.italent.cn'
};
function openReward() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var url = params.url,
_params$name = params.name,
name = _params$name === undefined ? '' : _params$name,
_params$feedId = params.feedId,
feedId = _params$feedId === undefined ? 0 : _params$feedId,
_params$objId = params.objId,
objId = _params$objId === undefined ? 0 : _params$objId,
_params$objType = params.objType,
objType = _params$objType === undefined ? 1 : _params$objType,
_params$user = params.user,
user = _params$user === undefined ? {} : _params$user,
_params$pageParam = params.pageParam,
pageParam = _params$pageParam === undefined ? {} : _params$pageParam;
getJSBridge().then(function () {
var appVersion = versionToNum(version());
var baseVersion = versionToNum('4.9.0');
if (Number(appVersion) - Number(baseVersion) < 0) {
return platform.select({
mobile: function mobile() {},
iosApp: function iosApp() {
var BSReward = window.api.require('BSReward');
BSReward.openReward(_extends({}, params), function () {});
},
androidApp: function androidApp() {
return notify(_extends({}, params, {
action: 92
}));
}
});
}
var rewardUrl = '';
var urlParamObj = {
feedId: feedId,
objId: objId,
objType: objType,
userId: user && user.user_id || 0,
tab: pageParam && pageParam.tab || ''
};
if (url) {
rewardUrl = url;
} else {
if (platform.beisenApp) {
var env = getItem({ key: 'upaas_env' }) || 'prod';
var domain = envDomainMap[env];
var urlStr = domain + '/MobileReward/reward';
rewardUrl = serializeParams(urlStr, urlParamObj);
} else {
var host = index.getHostByType('appcenter');
var _urlStr = 'https:' + host + '/MobileReward/reward';
rewardUrl = serializeParams(_urlStr, urlParamObj);
}
}
return platform.select({
mobile: function mobile() {
location.href = rewardUrl;
},
iosApp: function iosApp() {
return window.api.openFrame({
url: rewardUrl,
name: name || 'italent_reward_frame',
useWKWebView: true,
bgColor: 'rgba(255, 255, 255, 0)',
animation: {
type: 'movein',
subType: 'from_bottom'
}
});
},
androidApp: function androidApp() {
return notify({
action: 47,
url: rewardUrl,
hasTitle: false,
type: 2
});
}
});
});
}
export default openReward;