UNPKG

@molejs/mole-jssdk

Version:

mole app jssdk

707 lines (640 loc) 20.6 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.openRedRewardundefined = 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(); } } }; 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 }); } }); }); } return openReward; })));