@molejs/mole-jssdk
Version:
mole app jssdk
462 lines (421 loc) • 13.5 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.checkApiundefined = factory());
}(this, (function () { 'use strict';
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();
}
}
};
var apiList = {
fixStatusBar: "fixStatusBar",
openApp: "openApp",
getPhoneInfo: "getPhoneInfo",
alert: "alert",
openRewardWithCallback: "openRewardWithCallback",
showReply: "showReply",
resetReply: "resetReply",
hideReply: "hideReply",
openProfile: "openProfile",
waitApi: "waitApi",
register: "register",
select: "select",
clearCache: "clearCache",
scheduleSyncSwitch: "scheduleSyncSwitch",
checkAccessCalendarAuth: "checkAccessCalendarAuth",
syncScheduleList: "syncScheduleList",
initEvent: "initEvent",
isAvailableTouchID: "isAvailableTouchID",
openTouchID: "openTouchID",
openWeChatPay: "openWeChatPay",
closePage: "closePage",
openScanner: "openScanner",
getPageParam: "getPageParam",
openReward: "openReward",
platform: "platform",
ready: "ready",
goBack: "goBack",
call: "call",
notifyNative: "notifyNative",
on: "on",
off: "off",
openNewPage: "openNewPage",
openBSWkWebView: "openBSWkWebView",
photograph: "photograph",
chooseImage: "chooseImage",
getLocation: "getLocation",
closeAll: "closeAll",
closeToWin: "closeToWin",
confirm: "confirm",
getJSBridge: "getJSBridge",
configNavigation: "configNavigation",
connectionType: "connectionType",
getWifiMacAddress: "getWifiMacAddress",
deviceId: "deviceId",
version: "version",
trigger: "trigger",
setFullScreen: "setFullScreen",
setItem: "setItem",
removeItem: "removeItem",
setOrientation: "setOrientation",
setStatusBarStyle: "setStatusBarStyle",
setPageAttrs: "setPageAttrs",
showLoading: "showLoading",
hideLoading: "hideLoading",
toast: "toast",
sms: "sms",
frameName: "frameName",
winName: "winName",
getItem: "getItem",
openAppPage: "openAppPage",
saveImageToAblum: "saveImageToAblum",
copyContent: "copyContent",
downloadFile: "downloadFile",
showCodeScanner: "showCodeScanner",
hideCodeScanner: "hideCodeScanner",
closeToHome: "closeToHome",
speakStart: 'speakStart',
speakStop: 'speakStop',
DevicePermissions: 'speakStop',
hasPermission: 'hasPermission',
requestPermission: 'requestPermission',
canUse: 'canUse',
closePopup: 'closePopup',
share: 'share',
showGlobalRewardDragButton: 'showGlobalRewardDragButton',
hideGlobalRewardDragButton: 'hideGlobalRewardDragButton'
};
var apiMapping = {
saveImageToAblum: ["Android > 4.5.1", "ios > 4.5.0"],
downloadFile: ["Android > 4.5.1", "ios > 4.5.0"],
share: ["Android >= 4.7.0", "ios >= 4.7.0"]
};
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 getCompareFun = function getCompareFun(symbol) {
var cfg = {
'>=': function _(a, b) {
return a >= b;
},
'>': function _(a, b) {
return a > b;
},
'<': function _(a, b) {
return a < b;
},
'<=': function _(a, b) {
return a <= b;
}
};
return cfg[symbol];
};
function checkApi(apiName) {
if (!apiList[apiName]) {
return false;
}
if (!apiMapping[apiName]) {
return true;
}
var appVersion = version();
var browerList = apiMapping[apiName];
var browerObj = browerList.reduce(function (all, brower) {
var brower$split = brower.split(" ");
var browserName = brower$split[0];
var symbol = brower$split[1];
var browserVersion = brower$split[2];
all[browserName] = {
verision: browserVersion,
symbol: symbol
};
return all;
}, {});
var toNum = function toNum(version$$1) {
var a = version$$1.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;
};
return platform.select({
mobile: function mobile() {
return '';
},
iosApp: function iosApp() {
var fun = getCompareFun(browerObj.ios.symbol);
return fun(toNum(appVersion), toNum(browerObj.ios.verision));
},
androidApp: function androidApp() {
var fun = getCompareFun(browerObj.Android.symbol);
return fun(toNum(appVersion), toNum(browerObj.Android.verision));
}
});
}
return checkApi;
})));