From 138cb6a1780dd2048098133d8d2bf5af72037a4c Mon Sep 17 00:00:00 2001 From: Ritesh Shukla Date: Mon, 8 Jun 2026 10:40:45 +0530 Subject: [PATCH 1/2] Implement barcode recognition handling Added methods to handle recognized items and resolve the first barcode in the DataScannerScanSession. --- .../ios/DataScannerScanSession.swift | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/react-native-data-scanner/ios/DataScannerScanSession.swift b/packages/react-native-data-scanner/ios/DataScannerScanSession.swift index f87e3ab..e76c151 100644 --- a/packages/react-native-data-scanner/ios/DataScannerScanSession.swift +++ b/packages/react-native-data-scanner/ios/DataScannerScanSession.swift @@ -80,6 +80,42 @@ final class DataScannerScanSession: NSObject, DataScannerViewControllerDelegate, } } + + @MainActor + func dataScanner( + _ dataScanner: DataScannerViewController, + didAdd addedItems: [RecognizedItem], + allItems: [RecognizedItem] + ) { + resolveFirstBarcode(in: addedItems) + } + + @MainActor + func dataScanner( + _ dataScanner: DataScannerViewController, + didUpdate updatedItems: [RecognizedItem], + allItems: [RecognizedItem] + ) { + resolveFirstBarcode(in: updatedItems) + } + + @MainActor + private func resolveFirstBarcode(in items: [RecognizedItem]) { + guard !didFinish else { return } + + for item in items { + guard case .barcode(let barcode) = item else { continue } + guard barcode.payloadStringValue != nil else { continue } + + do { + finish(with: try barcode.toScannedBarcode()) + } catch { + finish(with: error) + } + return + } + } + @MainActor func dataScanner( _ dataScanner: DataScannerViewController, From f8cd4c83acfbcb1f63755047b5160b3f22c14c2a Mon Sep 17 00:00:00 2001 From: riteshshukla04 Date: Mon, 8 Jun 2026 10:43:42 +0530 Subject: [PATCH 2/2] chore: lint --- .../react-native-data-scanner/ios/DataScannerScanSession.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/react-native-data-scanner/ios/DataScannerScanSession.swift b/packages/react-native-data-scanner/ios/DataScannerScanSession.swift index e76c151..1e2d23b 100644 --- a/packages/react-native-data-scanner/ios/DataScannerScanSession.swift +++ b/packages/react-native-data-scanner/ios/DataScannerScanSession.swift @@ -80,7 +80,6 @@ final class DataScannerScanSession: NSObject, DataScannerViewControllerDelegate, } } - @MainActor func dataScanner( _ dataScanner: DataScannerViewController, @@ -89,7 +88,7 @@ final class DataScannerScanSession: NSObject, DataScannerViewControllerDelegate, ) { resolveFirstBarcode(in: addedItems) } - + @MainActor func dataScanner( _ dataScanner: DataScannerViewController,