mtl-js-sdk
Version:
ynf-fw-mtl-api
65 lines (61 loc) • 2.01 kB
JavaScript
/*
* @Author: wangyingliang@yonyou.com
* @Date: 2024-07-22 15:45:20
* @LastEditors: wangyingliang wangyingliang@yonyou.com
* @LastEditTime: 2025-02-25 21:44:16
* @FilePath: /mtl-api-project/src/platforms/upesn/platform.js
* @Description:
* Copyright (c) 2024 by Yonyou, All Rights Reserved.
*/
import methods from './methods'
import YYEsnBridge from './esn.min.js'
import builder from '../../common/builder'
let isReady = false;
let callbacks = [];
function recurseDelegate(module) {
let delegate = {};
for (const key in module) {
if (Object.prototype.hasOwnProperty.call(module, key)) {
const element = module[key];
if (typeof element === "function") {
delegate[key] = (...args) => {
console.log("exec api method1 :");
console.log(key);
console.log(args);
console.log("exec api data1: ");
if (isReady) {
builder.assignGetter(window.mtl, key, element);
element(...args);
} else {
callbacks.push(() => {
builder.assignGetter(window.mtl, key, element);
element(...args);
});
}
};
} else if (typeof element === "object") {
delegate[key] = recurseDelegate(element);
} else {
delegate[key] = element;
}
}
}
return delegate;
}
let platform = {
id: "upesn",
bootstrap(onready) {
try {
window.YYEsnBridge = YYEsnBridge;
YYEsnBridge.ready(() => {
isReady = true;
callbacks.forEach(cb => cb());
callbacks = null;
onready();
});
} catch (error) {
}
}
};
platform.exports = recurseDelegate(methods);
export default platform;