import React, { useState, useEffect } from 'react'; import { View, Text, StyleSheet, Button, Alert } from 'react-native'; import { BarCodeScanner } from 'expo-barcode-scanner'; interface QRScannerProps { onScan: (data: string) => void; onClose?: () => void; } export const QRScanner: React.FC = ({ onScan, onClose }) => { const [hasPermission, setHasPermission] = useState(null); const [scanned, setScanned] = useState(false); useEffect(() => { const getBarCodeScannerPermissions = async () => { const { status } = await BarCodeScanner.requestPermissionsAsync(); setHasPermission(status === 'granted'); }; getBarCodeScannerPermissions(); }, []); const handleBarCodeScanned = ({ type, data }: { type: string; data: string }) => { setScanned(true); onScan(data); Alert.alert('QR Code', `Scanned: ${data}`, [ { text: 'OK', onPress: () => setScanned(false) }, ]); }; if (hasPermission === null) { return ( Requesting for camera permission... ); } if (hasPermission === false) { return ( No access to camera {onClose &&