mtl-js-sdk
Version:
ynf-fw-mtl-api
162 lines (152 loc) • 4.55 kB
JavaScript
import {invokeSuccess, invokeFail} from '../callback'
import {onlinePreloadMdf, offlinePreloadMdf, onlineName, offlineName} from '../keys'
export function registerCommonCallback(handleName, callback) {
if (handleName && callback) {
window.MTLWebViewJavascriptBridge.registerHandler(handleName, callback);
}
}
export function registerCallback(handleName, callback) {
if (handleName && callback) {
window.MTLWebViewJavascriptBridge.registerHandler(handleName, function(res, responseCallback) {
console.log(res);
if (!!res && res !== "{}") {
callback(JSON.parse(res).qrString, responseCallback);
} else {
callback(res, responseCallback);
}
});
}
}
export function ready(callback) {
if (window.api) {
console.log('api already existed');
typeof callback === 'function' && callback();
} else if (!window.api && window.top !== window) {
try {
console.log('xxxxx window.top.api ready start');
window.api = window.top.api
typeof callback === 'function' && callback();
} catch (error) {
console.log('window.top.api catch')
}
} else {
console.log('api ready addEventListener start');
document.addEventListener('apiready', function() {
console.log('-------- api ready!!!!! ---------');
typeof callback === 'function' && callback();
}, false);
}
}
export function canExecUpesnBridge() {
let { upesnVersion = 0, platform} = window.mtl
if (platform == 'upesn' && upesnVersion > 0) {
return true
}
return false;
}
export function execUpesnBridgeify(name, param = {}) {
let { upesnVersion = 0, platform} = window.mtl
if (platform == 'upesn' && upesnVersion > 0) {
if (api[name]) {
api[name](param);
return true;
}
return false
}
return false;
}
export function execPluginBridge(param = {}) {
let {method, requireName} = param;
if (!method) {
invokeFail(param, {message: 'lack of param'});
return;
}
let m;
if (requireName) {
let obj = window.api.require(requireName);
if (!obj) {
invokeFail(param, {msg:'module ' + requireName + ' not added'});
return;
}
m = obj[method];
} else {
if ((method === 'openWindow' || method === 'openNewWebview') && mtl && mtl[method]) {
m = mtl[method]
} else {
m = window.api[method];
}
}
if (method === 'mdfIsLoad') {
mdfIsLoad()
}
if (!m) {
invokeFail(param, {msg: 'method ' + method + ' not found'});
return;
}
m(param, function(ret, err) {
if (ret) {
invokeSuccess(param, ret);
} else {
invokeFail(param, err);
}
});
}
export function execUpesnBridge(param) {
let {method} = param;
if (!method) {
invokeFail(param, {message: 'lack of param'});
return;
}
if (method === 'mdfIsLoad') {
mdfIsLoad()
}
if (api.execUpesnBridge) {
api.execUpesnBridge(param)
return
}
execPluginBridge(param);
}
export function execPluginSyncBridge(param = {}) {
let {method, requireName} = param;
if (!method) {
invokeFail(param, {message: 'lack of param'});
return;
}
let m;
if (requireName) {
let obj = window.api.require(requireName);
if (!obj) {
invokeFail(param, {msg:'module ' + requireName + ' not added'});
return;
}
m = obj[method];
} else {
param.sync = true;
m = window.api[method];
}
if (!m) {
invokeFail(param, {msg: 'method ' + method + ' not found'});
return;
}
return m(param);
}
export function mdfIsLoad(param = {}) {
console.log('-----------mdfIsLoad----------')
if (canExecUpesnBridge()) {
execUpesnBridgeify('mdfIsLoad', param, false);
return;
}
if (window.api.winName === onlineName || window.api.winName === offlineName) {
if (window.location.href.includes('https')) {
window.api.setGlobalData({
key: onlinePreloadMdf,
value: onlineName
});
} else {
window.api.setGlobalData({
key: offlinePreloadMdf,
value: offlineName
});
}
}
}