mtl-js-sdk
Version:
ynf-fw-mtl-api
66 lines (62 loc) • 2.13 kB
JavaScript
/*
* @Author: wangyingliang@yonyou.com
* @Date: 2024-07-22 15:45:20
* @LastEditors: wangyingliang wangyingliang@yonyou.com
* @LastEditTime: 2025-02-08 17:14:27
* @FilePath: /mtl-api-project/src/platforms/APIAndroid/platform.js
* @Description: 友空间 android 平台入口函数.
* Copyright (c) 2024 by Yonyou, All Rights Reserved.
*/
// import methods from '../APIIos/APICloud.js'
import methods from "../yyzone/index.js"
import builder from '../../common/builder.js'
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) => {
if (isReady) {
builder.assignGetter(window.mtl, key, element);
return 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: "APIAndroid",
bootstrap(onready) {
try {
methods?.ready(() => {
console.log('APIAndroid mtl ready:');
console.log(window.mtl);
console.log('消息队列 callbacks = ', callbacks)
isReady = true;
callbacks.forEach(cb => {
console.log(cb);
cb()
});
callbacks = null;
onready();
});
} catch (error) {
}
}
};
platform.exports = recurseDelegate(methods);
export default platform;