UNPKG

@molejs/mole-jssdk

Version:

mole app jssdk

462 lines (421 loc) 13.5 kB
(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; })));