UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

214 lines (201 loc) 5.76 kB
import { invokeSuccess, invokeFail } from '../callback' import { handleMessage } from '../message' import { requestPermission } from '../permission'; import { execUpesnBridgeify, canExecUpesnBridge } from '../bridge/index' let isRunning = false; export function rfidConnect(param = {}) { if (window.api?.systemType === 'ios') { return; } requestPermission({ list: ['ble-scan', 'ble-ad', 'ble-connect'], success: function() { let { moduleName } = param; if (!moduleName) { moduleName = getModuleName(); } const obj = window.api?.require(moduleName); if (!obj) { if (canExecUpesnBridge()) { execUpesnBridgeify('rfidConnect', { ...param }); return; } invokeFail(param, { msg: `module ${moduleName} not added` }); return; } if (moduleName === 'mtlUnis') { const name = window.api.getSystemInfoSync() || {} if (name.brand === 'alps') { obj.alpsRfidConnect(); window?.api.addEventListener({ name: 'resume' }, () => { obj.alpsRfidConnect(); }); window?.api.addEventListener({ name: 'pause' }, () => { obj.alpsRfidDisconnect(); }); window?.api.addEventListener({ name: 'keypress' }, (ret, err) => { if (ret && (ret.keyCode == 292 || ret.keyCode == 131)) { // 判断扳机状态 if (ret.action == "up") { // 判断运行状态 if (!isRunning) { isRunning = true; // 连接rfid obj.startInventory((alpsRes) => { if (alpsRes && alpsRes.status) { let tags; const { result } = alpsRes; if (result) { tags = []; result.forEach((item) => { tags.push(item.tagID); }); } const { callback } = param; callback && handleMessage(callback, { tags }); } else { invokeFail(param, { message: ret.message }); } }); } else { isRunning = false; obj.stopInventory(); } } } else { isRunning = false; console.log('alpsRfidConnect err = ', err); } }); } else { window?.api.addEventListener({ name: 'keypress' }, (ret, err) => { if (ret && ret.keyCode === 288) { // 紫光rfid手柄按键 if (ret.action === "down") { registerReaderCall(param, obj) } else if (ret.action === "up") { rfidDisconnect({ removeListener: false }) } } }); } } else { registerReaderCall(param, obj) } }, fail: param.fail }); } export function rfidDisconnect(param = {}) { if (window.api?.systemType === 'ios') { return; } let { moduleName } = param; if (!moduleName) { moduleName = getModuleName(); } const obj = window.api?.require(moduleName); if (!obj) { if (canExecUpesnBridge()) { execUpesnBridgeify('rfidDisconnect', param); return; } invokeFail(param, { msg: `module ${moduleName} not added` }); return; } obj.rfidDisconnect(param, (ret) => { if (ret) { invokeSuccess(param, {}); } else { invokeFail(param, {}); } }); const { removeListener = true } = param if (removeListener && moduleName === 'mtlUnis') { window.api.removeEventListener({ name: 'keypress' }); } } export function startPDAScan(param = {}) { execPadScan('startPDAScan', { ...param, success: function(ret) { if (ret && ret.status) { const { callback } = param; callback && handleMessage(callback, ret, (res) => { }); } else { invokeSuccess(param, ret) } } }) } export function stopPDAScan(param = {}) { execPadScan('stopPDAScan', param, false) invokeSuccess(param, {}); } function execPadScan(method, param, isFunction = true) { let { moduleName } = param; if (!moduleName) { moduleName = getModuleName(true); } const mtlPDA = window.api.require(moduleName); if (!mtlPDA) { if (window.api[method]) { window.api[method](param); return; } invokeFail(param, { msg: `module ${moduleName} not added` }); return; } if (!isFunction) { mtlPDA[method]() } else { mtlPDA[method](param, (ret, err) => { if (ret) { invokeSuccess(param, ret) } else { invokeFail(param, err) } }) } } function registerReaderCall(param = {}, obj) { obj.rfidConnect(param, (ret) => { if (ret && ret.status) { let tags; const { result } = ret; if (result) { tags = []; result.forEach((item) => { tags.push(item.tagID); }); } const { callback } = param; callback && handleMessage(callback, { tags }); } else { invokeFail(param, { message: ret.message }); } }); } function getModuleName(isPda = false) { const name = window.api.getSystemInfoSync() || {} if (name.brand === 'SUNMI' || name.brand === 'UNIS' || name.brand === 'alps') { const moduleName = 'mtlUnis'; const mtlPDA = window.api.require(moduleName); if (mtlPDA) { return moduleName } } return isPda ? 'mtlPDA' : 'zebraRFID' }