mtl-js-sdk
Version:
ynf-fw-mtl-api
233 lines (219 loc) • 6.3 kB
JavaScript
;
function Plugin(options, exports = {}) {
const { platform } = options || { platform: window.mtl.platform };
const upesnVersion = window.mtl.upesnVersion || 0
function supportMethod(object = {}) {
object.success && object.success({});
object.complete && object.complete({});
}
let userAgent = window.navigator.userAgent.toLowerCase();
let isAndroid = (userAgent.indexOf("android") !== -1) ? true : false;
//打印机
// 搜索可用的映美打印设备
function searchDevices(obj={}) {
const { time = 10, type = "all" } = obj;
if (platform === 'upesn' && isAndroid) {
const callbaseName = 'ymSearchDevices';
mtl.registerCommonCallback(callbaseName,
function(res,responseCallback) {
obj.callback && obj.callback(res);
obj.complete && obj.complete({data:res ,code: 200});
}
)
let data = Object.assign({
time,
type,
callback: callbaseName,
success: obj.success,
fail: obj.fail
});
execEsnBridge("searchDevices", data);
} else if (platform === 'APIAndroid') {
execApiBridge("searchDevices", obj);
} else {
supportMethod(obj)
}
}
// 是否支持蓝牙BLE
function isSupportedBLE(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("isSupportedBLE", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("isSupportedBLE", obj);
} else {
supportMethod(obj)
}
}
// 蓝牙是否开启
function isBluetoothOpen(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("isBluetoothOpen", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("isBluetoothOpen", obj);
} else {
supportMethod(obj)
}
}
// 获取已连接的设备信息
function getConnectedDevice(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("getConnectedDevice", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("getConnectedDevice", obj);
} else {
supportMethod(obj)
}
}
// 打印图片
function printPicture(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("printPicture", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("printPicture", obj);
} else {
supportMethod(obj)
}
}
// 打印html
function printHTML(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("printHTML", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("printHTML", obj);
} else {
supportMethod(obj)
}
}
// 打开系统的文件选择器,选择一个文件打印
function printFile(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("printFile", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("printFile", obj);
} else {
supportMethod(obj)
}
}
// 停止搜索
function stopSearch(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("stopSearch", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("stopSearch", obj);
} else {
supportMethod(obj)
}
}
// 关闭链接
function closeConnect(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("closeConnect", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("closeConnect", obj);
} else {
supportMethod(obj)
}
}
// 释放资源
function release(obj={}) {
if (platform === 'upesn' && isAndroid) {
execEsnBridge("release", obj);
} else if (platform === 'APIAndroid') {
execApiBridge("release", obj);
} else {
supportMethod(obj)
}
}
// upesn内部方法
function execEsnBridge(method, source) {
// api内部方法调用api.xxx方法(适配友空间公有云)
if (upesnVersion > 0) {
let newMethods = method
if (method === 'release') {
newMethods = 'releaseYmPrinter'
} else if (method === 'isBluetoothOpen') {
newMethods = 'getBlueToothState'
}
mtl.execPluginBridge({ ...source, method: newMethods, requireName: null })
return
}
let data = {
...source,
success: function (res) {
let resObj = (res && res === 'string') ? JSON.parse(res) : res;
source.success && source.success(resObj)
source.complete && source.complete({
code: 200,
data: resObj,
})
},
fail: function (err) {
const { errCode = 1, errDescription } = err;
let errMes;
try {
errMes = JSON.parse(errDescription);
} catch (error) {
errMes = { message : errDescription };
}
let result = {
code: errCode,
message: errMes.message
};
source.fail && source.fail(result);
source.complete && source.complete(result)
}
};
console.log("exec YYEsnBridge.do method :", method);
console.log("data: ", data);
YYEsnBridge.do(method, data);
}
// api内部插件方法
function execApiBridge(method, object) {
if (object === void 0) {
object = {};
}
var obj = window.api.require("yingmeiPrinter");
if (!obj) {
invokeFail(object, {
msg: "module yingmeiPrinter not added",
});
return;
}
obj[method](object, function (ret, err) {
console.log("yingmeiPrinter--------------", method, ret, err);
if (ret) {
invokeSuccess(object, ret);
} else {
invokeFail(object, err);
}
});
}
function invokeFail(param, err) {
if (!param) return;
if (err && !err.message) {
err.message = err.msg || err.errMsg;
}
typeof param.fail === "function" && param.fail(err);
}
function invokeSuccess(param, ret) {
if (!param) return;
typeof param.success === "function" && param.success(ret);
}
let apiMethods = {
searchDevices,
isSupportedBLE,
isBluetoothOpen,
getConnectedDevice,
printHTML,
printPicture,
printFile,
stopSearch,
closeConnect,
release
};
const methods = apiMethods;
exports.module = methods;
exports.symbolPath = "ymPrinter";
return exports;
}
export default Plugin;