0.7.1 • Published 8 months ago
react-native-cogniscan v0.7.1
react-native-cogniscan
A library to help with Digital ekyc process
Installation
npm install react-native-cogniscan
Basic Example Usage
import React, { useEffect, useState } from 'react';
import {
Alert,
Button,
Image,
ScrollView,
StyleSheet,
Text,
TouchableOpacity,
View,
} from 'react-native';
import {
CogniScanProvider,
getMetaData,
initialize,
startFaceMatch,
startOCR,
} from 'react-native-cogniscan';
export default function App() {
const [metadata, setMetadata] = useState<any>(null);
const [ocrResponse, setOcrResponse] = useState<any>(null);
const [faceMatchResponse, setFaceMatchResponse] = useState<any>(null);
const [selectedCountryId, setSelectedCountryId] = useState<number | null>(
null
);
const [selectedCardId, setSelectedCardId] = useState<number | null>(null);
useEffect(() => {
const initializePackage = async () => {
try {
await initialize('__________'); // Replace with your actual API key
} catch (error: any) {
Alert.alert('Initialization Error', error.message);
}
};
initializePackage();
}, []);
const fetchMetadata = async () => {
try {
const data = await getMetaData();
setMetadata(data);
} catch (error: any) {
Alert.alert('Metadata Error', error.message);
}
};
const handleStartOCR = async () => {
try {
if (selectedCountryId === null || selectedCardId === null) {
Alert.alert('Selection Error', 'Please select a card to scan.');
return;
}
const ocrResult = await startOCR(selectedCardId);
setOcrResponse(ocrResult?.payload);
} catch (error: any) {
console.error('OCR Error:', error);
Alert.alert('OCR Error', error.message);
}
};
const handleStartFacematch = async () => {
try {
if (!ocrResponse?.Person) {
Alert.alert(
'Face Match Error',
'No person image available for face match.'
);
return;
}
const facematchResult = await startFaceMatch(ocrResponse.Person);
setFaceMatchResponse(facematchResult?.payload);
} catch (error: any) {
console.error('Facematch Error:', error);
Alert.alert('Facematch Error', error.message);
}
};
const resetData = () => {
setMetadata(null);
setOcrResponse(null);
setFaceMatchResponse(null);
setSelectedCountryId(null);
setSelectedCardId(null);
};
return (
<ScrollView contentContainerStyle={styles.container}>
<Button title="Get Metadata" onPress={fetchMetadata} />
{metadata && (
<>
<Text style={styles.title}>Select a Card to Scan:</Text>
{metadata.countries.map((country: any) => (
<View key={country.id} style={styles.countryContainer}>
<Text style={styles.countryName}>{country.name}</Text>
{country.cards.map((card: any) => (
<TouchableOpacity
key={card.id}
style={styles.radioContainer}
onPress={() => {
setSelectedCountryId(country.id);
setSelectedCardId(card.id);
}}
>
<View style={styles.radioCircle}>
{selectedCardId === card.id &&
selectedCountryId === country.id && (
<View style={styles.selectedRb} />
)}
</View>
<View>
<Text style={styles.radioText}>{card.name}</Text>
<Text style={styles.cardDescription}>
{card.description}
</Text>
</View>
</TouchableOpacity>
))}
</View>
))}
</>
)}
<Button
title="Start OCR"
onPress={handleStartOCR}
disabled={!selectedCardId}
/>
<CogniScanProvider />
{ocrResponse && (
<View style={styles.resultContainer}>
<Text style={styles.resultText}>OCR Data:</Text>
{ocrResponse.Person ? (
<Image
source={{ uri: `data:image/png;base64,${ocrResponse.Person}` }}
style={styles.personImage}
/>
) : (
<Text>No Image Available</Text>
)}
{Object.entries(ocrResponse)
.filter(([key]) => key !== 'Person')
.map(([key, value]) => (
<Text key={key} style={styles.dataText}>
{key}: {value}
</Text>
))}
</View>
)}
<Button title="Start Face Match" onPress={handleStartFacematch} />
{faceMatchResponse && (
<View style={styles.resultContainer}>
{Object.entries(faceMatchResponse).map(([key, value]) => (
<Text key={key} style={styles.dataText}>
{key}: {value.score !== undefined ? value.score : value.distance}
</Text>
))}
</View>
)}
<Button title="Reset Data" onPress={resetData} color="red" />
</ScrollView>
);
}
const styles = StyleSheet.create({
container: {
padding: 20,
gap: 10,
},
jsonPre: {
fontFamily: 'monospace',
fontSize: 12,
backgroundColor: '#e0e0e0',
padding: 10,
borderRadius: 5,
marginVertical: 10,
color: '#333',
},
resultContainer: {
marginTop: 20,
alignItems: 'center',
},
personImage: {
width: 100,
height: 100,
resizeMode: 'contain',
marginBottom: 10,
},
resultText: {
fontSize: 18,
fontWeight: 'bold',
marginBottom: 10,
},
dataText: {
fontSize: 16,
marginBottom: 5,
},
title: {
fontSize: 18,
fontWeight: 'bold',
marginVertical: 10,
},
countryContainer: {
marginBottom: 20,
},
countryName: {
fontSize: 16,
fontWeight: 'bold',
marginBottom: 5,
},
radioContainer: {
flexDirection: 'row',
alignItems: 'center',
marginBottom: 10,
},
radioText: {
fontSize: 16,
},
cardDescription: {
fontSize: 12,
color: '#666',
},
radioCircle: {
height: 20,
width: 20,
borderRadius: 10,
borderWidth: 2,
borderColor: '#2680EB',
alignItems: 'center',
justifyContent: 'center',
marginRight: 10,
},
selectedRb: {
width: 10,
height: 10,
borderRadius: 5,
backgroundColor: '#2680EB',
},
});
Made with create-react-native-library
Created with : npx create-react-native-library@0.28.0 cogniscan-master --reactNativeVersion 0.71.7
0.7.1
8 months ago
0.7.4-patch
8 months ago
0.7.3-patch
8 months ago
0.7.2-patch
8 months ago
0.7.1-patch
8 months ago
0.7.0
8 months ago
0.7.0-patch
8 months ago
0.6.2
9 months ago
0.6.1
9 months ago
0.6.0
9 months ago
0.5.6
10 months ago
0.5.5
10 months ago
0.5.4-patch-0
10 months ago
0.5.4
10 months ago
0.5.3
10 months ago
0.5.2
10 months ago
0.5.1
10 months ago
0.5.0
10 months ago
0.4.2
11 months ago
0.4.1
11 months ago
0.4.0-patch-1
11 months ago
0.4.0-patch
11 months ago
0.4.0
11 months ago
0.3.0-2-patch
11 months ago
0.3.0-3
11 months ago
0.3.0-2
11 months ago
0.3.0-1
11 months ago
0.3.0
11 months ago
0.2.0-1
11 months ago
0.2.0
11 months ago
0.1.0
11 months ago