package expo.modules.datalogicsdkbridge import expo.modules.kotlin.modules.Module import expo.modules.kotlin.modules.ModuleDefinition import androidx.core.os.bundleOf import com.datalogic.decode.BarcodeManager import com.datalogic.decode.DecodeResult import com.datalogic.decode.ReadListener class ReactNativeDatalogicSdkBridgeModule : Module() { private var barcodeManager: BarcodeManager? = null private var readListener: ReadListener? = null override fun definition() = ModuleDefinition { Name("BarcodeManager") Events("onBarcodeRead") Function("addReadListener") { try { if (barcodeManager == null) { barcodeManager = BarcodeManager() } if (readListener == null) { readListener = ReadListener { decodeResult: DecodeResult? -> decodeResult?.let { val data = it.text val timestamp = System.currentTimeMillis() this@ReactNativeDatalogicSdkBridgeModule.sendEvent( "onBarcodeRead", bundleOf( "data" to data, "timestamp" to timestamp ) ) } } barcodeManager?.addReadListener(readListener) } } catch (e: Exception) { // Gestion d'erreur si le scanner n'est pas disponible this@ReactNativeDatalogicSdkBridgeModule.sendEvent( "onBarcodeRead", bundleOf( "data" to "ERROR: Scanner not available", "timestamp" to System.currentTimeMillis() ) ) } } Function("removeReadListener") { try { if (barcodeManager != null && readListener != null) { barcodeManager?.removeReadListener(readListener) readListener = null } } catch (e: Exception) { // Gestion d'erreur silencieuse } } } }