add camera reader

This commit is contained in:
Rémi Colin
2024-01-12 12:00:18 +01:00
parent 910fd8b8d7
commit d5a71f092f
2 changed files with 42 additions and 3 deletions

View File

@@ -109,6 +109,37 @@ function App(): JSX.Element {
gender: false,
expiry_date: false,
});
const startCameraScan = () => {
NativeModules.CameraActivityModule.startCameraActivity()
.then((mrzInfo) => {
console.log('MRZ Info:', mrzInfo);
const lines = mrzInfo.split('\n');
if (lines.length >= 2) {
const secondLine = lines[1];
console.log('Second Line:', secondLine);
const passportNumber = secondLine.substring(0, 9).replace(/</g, '').trim(); // Passport number (first 9 characters, remove filler characters)
const dateOfBirth = secondLine.substring(13, 19); // Date of birth (YYMMDD) at positions 14-19
const dateOfExpiry = secondLine.substring(21, 27); // Date of expiry (YYMMDD) at positions 22-27
console.log('passportNumber:', passportNumber);
console.log('dateOfBirth:', dateOfBirth);
console.log('dateOfExpiry:', dateOfExpiry);
setPassportNumber(passportNumber);
setDateOfBirth(dateOfBirth);
setDateOfExpiry(dateOfExpiry);
} else {
console.error('Invalid MRZ format');
}
// Handle the MRZ Info as needed
})
.catch((error) => {
console.error('Camera Activity Error:', error);
});
};
const handleDisclosureChange = (field: keyof typeof disclosure) => {
setDisclosure(
@@ -388,6 +419,7 @@ function App(): JSX.Element {
dateOfExpiry={dateOfExpiry}
setDateOfExpiry={setDateOfExpiry}
onScanPress={scan}
onStartCameraScan={startCameraScan}
/>
) : null}
{step === 'scanning' ? (

View File

@@ -15,9 +15,16 @@ const EnterDetailsScreen = ({
setDateOfBirth,
dateOfExpiry,
setDateOfExpiry,
onScanPress
onScanPress,
onStartCameraScan
}) => {
const [selectedToggle, setSelectedToggle] = useState('write');
const handleCameraPress = () => {
if (selectedToggle === 'write') {
onStartCameraScan(); // Call the function passed as prop
setSelectedToggle('write');
}
};
return (
<View style={styles.sectionContainer}>
@@ -33,12 +40,12 @@ const EnterDetailsScreen = ({
<ToggleGroup.Item value="write">
<AlignCenter />
</ToggleGroup.Item>
<ToggleGroup.Item value="camera">
<ToggleGroup.Item value="camera" onPress={handleCameraPress}>
<Camera />
</ToggleGroup.Item>
</ToggleGroup>
{selectedToggle === 'write' ? (
{true ? (
<View style={styles.inputContainer}>
<CustomTextInput
value={passportNumber}