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',
},
});