UNPKG

react-native-urovo-scanner

Version:

React Native package for Urovo Scanner SDK integration - Official SDK implementation

228 lines (227 loc) 6.24 kB
/** * Interfaz TypeScript para el módulo nativo UrovoScannerModule * Usando la API oficial de Urovo ScanManager */ import { NativeModules, NativeEventEmitter, } from 'react-native'; // Constantes de la API oficial de Urovo export const SCAN_MODES = { SCAN_MODE_BROADCAST: 0, SCAN_MODE_STORAGE: 1, SCAN_MODE_WEDGE: 2, }; export const TRIGGER_MODES = { SCAN_TRIGGER_MODE_ONESHOT: 0, SCAN_TRIGGER_MODE_CONTINUOUS: 1, SCAN_TRIGGER_MODE_PULSE: 2, }; // Obtener el módulo nativo const UrovoScannerModule = NativeModules.UrovoScannerModule; // Crear el event emitter const eventEmitter = new NativeEventEmitter(NativeModules.UrovoScannerModule); // Clase principal del scanner export class UrovoScanner { constructor() { this.scanResultSubscription = null; this.scanErrorSubscription = null; } /** * Abrir el scanner */ async openScanner() { try { return await UrovoScannerModule.openScanner(); } catch (error) { console.error('Error abriendo scanner:', error); return false; } } /** * Cerrar el scanner */ async closeScanner() { try { return await UrovoScannerModule.closeScanner(); } catch (error) { console.error('Error cerrando scanner:', error); return false; } } /** * Verificar si el scanner está abierto */ async isScannerOpened() { try { return await UrovoScannerModule.isScannerOpened(); } catch (error) { console.error('Error verificando estado del scanner:', error); return false; } } /** * Iniciar escaneo */ async startScan() { try { return await UrovoScannerModule.startScan(); } catch (error) { console.error('Error iniciando escaneo:', error); return false; } } /** * Detener escaneo */ async stopScan() { try { return await UrovoScannerModule.stopScan(); } catch (error) { console.error('Error deteniendo escaneo:', error); return false; } } /** * Obtener información del scanner */ async getScannerInfo() { try { return await UrovoScannerModule.getScannerInfo(); } catch (error) { console.error('Error obteniendo información del scanner:', error); return null; } } /** * Configurar modo de salida */ async setOutputMode(mode) { try { return await UrovoScannerModule.setOutputMode(mode); } catch (error) { console.error('Error configurando modo de salida:', error); return false; } } /** * Configurar modo de trigger */ async setTriggerMode(mode) { try { return await UrovoScannerModule.setTriggerMode(mode); } catch (error) { console.error('Error configurando modo de trigger:', error); return false; } } // ========== MÉTODOS DE CONFIGURACIÓN ========== /** * Obtener configuración de parámetros enteros */ async getConfiguration() { try { return await UrovoScannerModule.getParameterInts(); } catch (error) { console.error('Error obteniendo configuración:', error); return null; } } /** * Configurar parámetro entero */ async setConfiguration(propertyId, value) { try { return await UrovoScannerModule.setParameterInts(propertyId, value); } catch (error) { console.error('Error configurando parámetro:', error); return false; } } /** * Configurar parámetro string */ async setConfigurationString(propertyId, value) { try { return await UrovoScannerModule.setParameterString(propertyId, value); } catch (error) { console.error('Error configurando parámetro string:', error); return false; } } /** * Obtener configuración de parámetros string */ async getStringConfiguration() { try { return await UrovoScannerModule.getParameterString(); } catch (error) { console.error('Error obteniendo configuración string:', error); return null; } } /** * Configurar parámetro string */ async setStringConfiguration(propertyId, value) { try { return await UrovoScannerModule.setParameterString(propertyId, value); } catch (error) { console.error('Error configurando parámetro string:', error); return false; } } /** * Obtener constantes PropertyID */ async getPropertyConstants() { try { return await UrovoScannerModule.getPropertyConstants(); } catch (error) { console.error('Error obteniendo constantes:', error); return null; } } /** * Suscribirse a eventos de escaneo */ onScanResult(callback) { this.scanResultSubscription = eventEmitter.addListener('onScanResult', callback); return this.scanResultSubscription; } /** * Suscribirse a eventos de error */ onScanError(callback) { this.scanErrorSubscription = eventEmitter.addListener('onScanError', callback); return this.scanErrorSubscription; } /** * Remover todas las suscripciones */ removeAllListeners() { if (this.scanResultSubscription) { this.scanResultSubscription.remove(); this.scanResultSubscription = null; } if (this.scanErrorSubscription) { this.scanErrorSubscription.remove(); this.scanErrorSubscription = null; } } } // Exportar instancia singleton export const urovoScanner = new UrovoScanner(); // Exportar también como default export default urovoScanner;