Files
scan-code-jssdk/src/_core.js
2026-05-29 14:23:03 +08:00

68 lines
1.7 KiB
JavaScript

import './polyfill';
import {
supportList,
onScanListener, offScanListener,
onScanErrorListener, offScanErrorListener,
setStatusListener, getStatus,
startScan, stopScan, scanImage, scanImageFromFile, clear
} from './services/provider/scan';
import { setConfig, getVersion } from './services/config';
import { initWxJssdk } from './services/wx';
import {
isSupportWebScan,
prepareWebScanBarcodeDetector,
isSupportImageScan
} from './services/web';
import { printDebug, printWarn } from './utils/logger';
let _readyPromise = null;
let _calledReady = false;
export function isReadyCalled() {
return _calledReady;
}
function config(config) {
if (config) {
setConfig(config);
}
if (_readyPromise) {
return _readyPromise;
}
_readyPromise = Promise.resolve().then(() => {
initWxJssdk().catch(err => {
printDebug('init wx jssdk failed:', err && err.message ? err.message : err);
});
}).then(() => {
printDebug('-------------------------------------');
printDebug('sdk_version:', getVersion());
printDebug('support_list:', supportList.map(item => item.name + ':' + item.support).join(', '));
printDebug('-------------------------------------');
if (isSupportWebScan() || isSupportImageScan()) {
return prepareWebScanBarcodeDetector().catch(err => {
printWarn('prepare barcode detector failed:', err);
});
}
}).then(() => {
_calledReady = true;
}).catch(err => {
_readyPromise = null;
throw err;
});
return _readyPromise;
}
export default Object.assign({}, {
config,
onScanListener,
offScanListener,
onScanErrorListener,
offScanErrorListener,
setStatusListener,
getStatus,
startScan,
stopScan,
scanImage,
scanImageFromFile,
clear,
});