react-native-scanbot-barcode-scanner-sdk
Version:
Scanbot Barcode Scanner SDK React Native Plugin for Android and iOS
59 lines (56 loc) • 3.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ScanbotBarcodeImpl = void 0;
var _reactNative = require("react-native");
var _types = require("../types");
var _scanbotBarcodeSDKModule = require("./scanbotBarcodeSDKModule");
const isIOS = _reactNative.Platform.OS === 'ios';
/**
* @internal
* @hidden
*/
const ScanbotBarcodeImpl = exports.ScanbotBarcodeImpl = {
async startScanner(configuration) {
const barcodeItemMapperEventName = 'barcodeItemMapperEvent';
let barcodeItemMapperCallback = null;
let barcodeItemMapperEventEmitter;
if (configuration.useCase instanceof _types.SingleScanningMode || configuration.useCase instanceof _types.MultipleScanningMode) {
barcodeItemMapperCallback = configuration.useCase.barcodeInfoMapping.barcodeItemMapper;
if (barcodeItemMapperCallback) {
barcodeItemMapperEventEmitter = new _reactNative.NativeEventEmitter(_scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule);
barcodeItemMapperEventEmitter.removeAllListeners(barcodeItemMapperEventName);
barcodeItemMapperEventEmitter.addListener(barcodeItemMapperEventName, barcodeItem => {
const barcodeItemUuid = `${barcodeItem.text}${barcodeItem.upcEanExtension}_${barcodeItem.format}`;
barcodeItemMapperCallback(barcodeItem, barcodeMappedData => _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.onBarcodeItemMapper(barcodeItemUuid, barcodeMappedData), () => _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.onBarcodeItemMapper(barcodeItemUuid, null));
});
// On iOS, the communication with the native part is throwing an error (startBarcodeScannerV2) because of the barcodeItemMapper
// callback in the configuration class (not parsable), that's why we need to remove it before executing startBarcodeScannerV2 method
configuration.useCase.barcodeInfoMapping.barcodeItemMapper = null;
}
}
try {
const barcodeResult = await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.startBarcodeScanner(isIOS ? JSON.stringify(configuration) : configuration, !!barcodeItemMapperCallback);
return (0, _types.mapRTUUIResult)(barcodeResult, _types.BarcodeScannerUiResult);
} catch (error) {
throw (0, _types.createSBError)(error);
} finally {
barcodeItemMapperEventEmitter?.removeAllListeners(barcodeItemMapperEventName);
barcodeItemMapperEventEmitter = undefined;
}
},
scanFromImage(params) {
return (0, _types.withSBErrorHandling)(async () => new _types.BarcodeScannerResult(await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.scanBarcodesFromImage({
configuration: params.configuration,
image: (0, _types.handleImageInput)(params.image)
})));
},
scanFromPdf(params) {
return (0, _types.withSBErrorHandling)(async () => new _types.BarcodeScannerResult(await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.scanBarcodesFromPdf(params)));
},
parseDocument(params) {
return (0, _types.withSBErrorHandling)(async () => new _types.BarcodeDocumentParserResult(await _scanbotBarcodeSDKModule.ScanbotBarcodeSDKModule.parseBarcodeDocument(params)));
}
};
//# sourceMappingURL=BarcodeScannerImpl.js.map