zby-live-sdk
Version:
This is a live SDK for weclassroom.
47 lines (44 loc) • 1.93 kB
JavaScript
/*
* @Author: why
* @Date: 2019-06-18 11:42:34
* @LastEditors: Please set LastEditors
* @LastEditTime: 2020-09-11 11:33:35
* @Description: this is a bridge for js and app
*/
import {productName, classType} from '../config/config';
import defaultApi from '../default';
const EM = window.EM;
// 不需要写日志方法名集合
const noWriteLogNames = ['GetCurCpuMemInfo', 'WriteLog', 'IsStreamAudioMuted', 'IsStreamVideoMuted'];
export const cb = (extName) => {
// EM 是寄宿于端的,浏览器中并不存在,为防止报错需要先进行能力检测
if (EM) {
return function(name, args, sdkName){
const argsStr = typeof args === 'object' ? JSON.stringify({...args, classType}) : args;
return new Promise((resolve, reject) => {
EM.CallMethod(
extName,
name,
argsStr,
(code, msg) => {
const msgbody = `${extName}--action: ${sdkName || ''}--${name || name.charAt(0).toLowerCase() + name.slice(1)} Code: ${code}\nMessage: ${msg}\nparams:${JSON.stringify(args)}`;
if (code === 0) {
!noWriteLogNames.includes(name) && defaultApi.writeLog && defaultApi.writeLog(msgbody, productName);
resolve({
code,
msg: msg && /\{|\}/g.test(msg) && JSON.parse(msg)
});
} else {
name !== 'WriteLog' && defaultApi.writeLog && defaultApi.writeLog(msgbody, productName, 'error');
resolve({
code,
msg
});
}
});
}).catch(() => {
name !== 'WriteLog' && defaultApi.writeLog && defaultApi.writeLog(`${extName}--action: ${sdkName || ''}--${name || name.charAt(0).toLowerCase() + name.slice(1)} Code: ${code}\nMessage: ${msg}\nparams:${JSON.stringify(args)}`, productName, 'error');
});
};
}
};