68 lines
1.7 KiB
JavaScript
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,
|
|
}); |