UNPKG

react-native-urovo

Version:
42 lines (41 loc) 1.19 kB
"use strict"; 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