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, });