diff --git a/App.tsx b/App.tsx index 10eb3fe..a1bd2a3 100644 --- a/App.tsx +++ b/App.tsx @@ -15,8 +15,8 @@ import {BarCodeDisplay, PrintButton, PrintingMessage} from './components/Print'; import {IdNumberInput, InitialsInput, InputIdButton, ScanButton, Scanner} from './components/Scan'; import {SettingsScreen} from './components/Settings'; import {styles, theme} from './components/Styles'; -import {sendDataToFirebase, SyncMessage} from './components/Sync'; -import {firebaseConfig, defaults} from './config/default'; +import {SyncMessage} from './components/Sync'; +import {defaults, firebaseConfig} from './config/default'; import {BarcodeScannerAppState} from './models/BarcodeScannerAppState'; import {CameraType, ElementProps, StateProps} from './models/ElementProps'; import {LineCount} from './models/LineCount'; @@ -87,7 +87,8 @@ export default function Main() { }, []); // State event handlers - const _doNothing = () => {}; + const _doNothing = () => { + }; const _scan = () => { setErrorMessage(''); setAppState(BarcodeScannerAppState.SCANNING); @@ -107,13 +108,9 @@ export default function Main() { const handleBarCodeScanned = (e: BarCodeEvent) => { // Make sure the data is the right length. - // Scanned barcodes will be exactly 14 digits long. - // Manually-entered ID numbers will be exactly 9 digits long. const barCodeString = e.data; - const pattern = /^[\d]{14}$|^[\d]{9}$/; - console.log('barCodeString', barCodeString); - if (pattern.test(barCodeString)) { - const cardId = e.data.slice(0, 9); + if (defaults.barCodeRegex.test(barCodeString)) { + const cardId = e.data.slice(0, defaults.barCodeNumLength); const newSampleDate = new Date(); setBarCodeId(cardId); setSampleDate(newSampleDate); diff --git a/components/LineCount.tsx b/components/LineCount.tsx index fca3cde..1907dcf 100644 --- a/components/LineCount.tsx +++ b/components/LineCount.tsx @@ -1,8 +1,7 @@ -import {ButtonProps, InputLineCountScreenProps} from '../models/ElementProps'; import React, {ReactElement, useState} from 'react'; import {View} from 'react-native'; -import {DefaultTheme, Subheading, Title, RadioButton, Paragraph, TextInput, HelperText, Button} from 'react-native-paper'; -import {TextInput as NumberInput} from 'react-native'; +import {Button, DefaultTheme, HelperText, Subheading, TextInput, Title} from 'react-native-paper'; +import {ButtonProps, InputLineCountScreenProps} from '../models/ElementProps'; import {colors, styles} from './Styles'; export const InputLineCountButton = (props: ButtonProps): ReactElement => { diff --git a/components/Scan.tsx b/components/Scan.tsx index 7771ec3..e7d06e2 100644 --- a/components/Scan.tsx +++ b/components/Scan.tsx @@ -2,6 +2,7 @@ import {BarCodeScanner} from 'expo-barcode-scanner'; import React, {ReactElement, useState} from 'react'; import {Text, View} from 'react-native'; import {Button, DefaultTheme, HelperText, Subheading, TextInput, Title} from 'react-native-paper'; +import {defaults} from '../config/default'; import {ButtonProps, ElementProps, InputInitialsProps, ScannerProps} from '../models/ElementProps'; import {colors, styles} from './Styles'; @@ -56,9 +57,8 @@ export const InputIdButton = (props: ButtonProps): ReactElement => { export const IdNumberInput = (props: ScannerProps): ReactElement => { const [inputStr, setInputStr] = useState(''); - const pattern = /^[\d]{9}$/; const hasErrors = () => { - return !pattern.test(inputStr); + return !defaults.barCodeRegex.test(inputStr); }; const onSubmit = () => { @@ -81,7 +81,7 @@ export const IdNumberInput = (props: ScannerProps): ReactElement => { keyboardType="numeric" /> - ID number must be exactly 9 digits. No other characters are allowed. + ID number must be exactly {defaults.barCodeNumLength} digits. No other characters are allowed.