npm package: @phermange/datalogic-sdk-bridge
Description: React Native bridge for Datalogic SDK - Barcode scanner integration for Expo apps
Author: Pierre
Latest version: 0.7.5

# @phermange/datalogic-sdk-bridge

React Native bridge pour le SDK Datalogic - Intégration de scanner de codes-barres pour les applications Expo.

## Installation

```bash
npm install @phermange/datalogic-sdk-bridge
```

## Utilisation

### Import du module

```typescript
import { BarcodeManager } from "@phermange/datalogic-sdk-bridge";
```

### Écoute des événements de scan

```typescript
import { useEffect, useState } from "react";
import { BarcodeManager } from "@phermange/datalogic-sdk-bridge";

export default function ScannerComponent() {
  const [lastScannedCode, setLastScannedCode] = useState<string>("");

  useEffect(() => {
    try {
      // Ajouter l'écouteur d'événements
      const subscription = BarcodeManager.addListener(
        "onBarcodeRead",
        (event) => {
          console.log("Code-barres scanné:", event.data);
          console.log("Timestamp:", event.timestamp);
          setLastScannedCode(event.data);
        }
      );

      // Démarrer l'écoute du scanner matériel (optionnel pour la simulation)
      BarcodeManager.addReadListener();

      // Cleanup lors du démontage du composant
      return () => {
        subscription.remove();
        BarcodeManager.removeReadListener();
      };
    } catch (error) {
      console.error("Erreur lors de l'initialisation du scanner:", error);
    }
  }, []);

  return (
    <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
      <Text style={{ fontSize: 18, marginBottom: 20 }}>Scanner Datalogic</Text>
      {lastScannedCode ? (
        <Text style={{ fontSize: 16, color: "green" }}>
          Dernier scan: {lastScannedCode}
        </Text>
      ) : (
        <Text style={{ fontSize: 16, color: "gray" }}>
          En attente d'un scan...
        </Text>
      )}
    </View>
  );
}
```

### Simulation sans matériel (tests)

Pour tester la gestion d'événements côté React Native sans PDA/scanner Datalogic, utilisez la méthode native de simulation:

```typescript
import { BarcodeManager } from "@phermange/datalogic-sdk-bridge";

// Émet un événement onBarcodeRead avec la donnée fournie
BarcodeManager.simulateBarcodeRead("TEST-123456");
```

Note:

- La première fois que vous ajoutez/appelez une API native, une reconstruction native est requise (ex: `npx expo run:android`). Un simple reload JS ne suffit pas.
- `addReadListener()` n'est pas nécessaire pour la simulation, mais peut rester si déjà appelé.

## API

### BarcodeManager

#### `addReadListener()`

Démarre l'écoute du scanner Datalogic (matériel).

#### `removeReadListener()`

Arrête l'écoute du scanner Datalogic (matériel).

#### `simulateBarcodeRead(data: string)`

Émet manuellement un événement `onBarcodeRead` pour les tests, avec la chaîne `data` fournie et un `timestamp` généré côté natif.

#### `addListener(eventName, listener)`

Ajoute un écouteur d'événements pour les scans de codes-barres.

**Paramètres:**

- `eventName`: `"onBarcodeRead"`
- `listener`: Fonction appelée lors d'un scan avec l'événement `BarcodeReadEvent`

#### Types TypeScript

```typescript
type BarcodeReadEvent = {
  data: string; // Le code-barres scanné
  timestamp: number; // Timestamp du scan
};
```

## Plateformes supportées

- ✅ Android
- ❌ iOS (non supporté)
- ❌ Web (non supporté)

## Prérequis

- Expo SDK
- Appareil Android avec scanner Datalogic intégré (pour les tests matériels)
- Le SDK Datalogic Android est automatiquement inclus via JitPack

## Licence

MIT