import { View, StyleSheet, Text } from 'react-native'; import { Camera, useCameraDevice, useCameraPermission, useCodeScanner, type Code, } from 'react-native-vision-camera'; type QRScannerProps = { onScan: (data: string) => void; }; export function QRScanner({ onScan }: QRScannerProps) { const device = useCameraDevice('back'); const permission = useCameraPermission(); const codeScanner = useCodeScanner({ codeTypes: ['qr'], // correct CodeType onCodeScanned: (codes: Code[]) => { const code = codes[0]; if (!code?.value) return; // undefined-safe onScan(code.value); }, }); if (!permission.hasPermission) { return ( Camera permission not granted ); } if (!device) { return ( Camera not available ); } return ( ); } const styles = StyleSheet.create({ container: { flex: 1, }, center: { flex: 1, alignItems: 'center', justifyContent: 'center', }, });