react-native-urovo
Version:
React native bindings for urovo scanners
42 lines (41 loc) • 1.19 kB
JavaScript
;
import { useEffect, useState } from 'react';
import { NativeEventEmitter, Platform } from 'react-native';
import { closeScanner, openScanner, OutputMode, UROVO_EVENTS } from 'react-native-urovo';
import NativeUrovo from '../NativeUrovo';
export const useUrovo = ({
onScan,
outputMode = OutputMode.INTENT
}) => {
const [isScannerOpened, setIsScannerOpened] = useState(false);
useEffect(() => {
let isMounted = true;
const open = async () => {
const isOpened = await openScanner(outputMode);
if (isMounted) {
setIsScannerOpened(!!isOpened);
}
};
open();
return () => {
isMounted = false;
closeScanner();
};
}, []);
useEffect(() => {
let eventListener;
if (isScannerOpened && NativeUrovo) {
const eventEmitter = Platform.OS === 'android' ? new NativeEventEmitter() : new NativeEventEmitter(NativeUrovo);
eventListener = eventEmitter.addListener(UROVO_EVENTS.ON_SCAN, scan => {
onScan(scan);
});
}
return () => {
eventListener?.remove();
};
}, [isScannerOpened, onScan]);
return {
isScannerOpened
};
};
//# sourceMappingURL=useUrovo.js.map