Files
inji-wallet/components/FaceScanner/FaceCompare.tsx
adityankannan-tw 339e08c462 [INJIMOB-1433,528] - Add passive liveness detection with blink detection (#1474)
* [INJIMOB-528] add liveness support for face verification

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-528] add and comment blink detection

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-528] update locales and remove blink detection

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] add blinking and increase threshold if blinking is detected

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] sync package lock json

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] update node version to 18 for android build

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] refactor

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] refactor components

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] use the default version of package resolved file

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] refactor and add new env for liveness in workflow

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] remove new env and unused code

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-1433] add new env for liveness and combine build descriptiona and build name

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

* [INJIMOB-528] update package lock & pbxproj files

Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>

* [INJIMOB-1433] add test id for elements

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>

---------

Signed-off-by: adityankannan-tw <adityan410pm@gmail.com>
Signed-off-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
Co-authored-by: adityankannan-tw <adityan410pm@gmail.com>
Co-authored-by: KiruthikaJeyashankar <81218987+KiruthikaJeyashankar@users.noreply.github.com>
2024-06-04 13:59:02 +05:30

78 lines
2.3 KiB
TypeScript

import React from 'react';
import { Camera, CameraType } from 'expo-camera';
import { View, TouchableOpacity } from 'react-native';
import {SvgImage} from '../ui/svg';
import { Text, Column, Row, Centered } from '../ui';
import {RotatingIcon} from '../RotatingIcon';
import { Theme } from '../ui/styleUtils';
import testIDProps from '../../shared/commonUtil';
const FaceCompare: React.FC<FaceCompareProps> = ({
whichCamera,
setCameraRef,
isCapturing,
isVerifying,
service,
t
}) => {
return (
<Column fill align="space-between" style={{ backgroundColor: '#ffffff' }}>
<View style={{ flex: 2, marginTop: 15 }}>
<View style={Theme.CameraEnabledStyles.scannerContainer}>
<View>
<Camera
{...testIDProps('camera')}
style={Theme.CameraEnabledStyles.scanner}
type={whichCamera}
ref={setCameraRef}
/>
</View>
</View>
<Text
testID="imageCaptureGuide"
align="center"
weight="semibold"
style={Theme.TextStyles.base}
margin="80 57"
>
{t('imageCaptureGuide')}
</Text>
</View>
<Centered>
{isCapturing || isVerifying ? (
<RotatingIcon name="sync" size={64} />
) : (
<Row align="center">
<Centered style={Theme.Styles.imageCaptureButton}>
<TouchableOpacity onPress={() => service.send('CAPTURE')}>
{SvgImage.CameraCaptureIcon()}
</TouchableOpacity>
<Text testID="captureText" style={Theme.CameraEnabledStyles.iconText}>
{t('capture')}
</Text>
</Centered>
<Centered>
<TouchableOpacity onPress={() => service.send('FLIP_CAMERA')}>
{SvgImage.FlipCameraIcon()}
</TouchableOpacity>
<Text testID="flipCameraText" style={Theme.CameraEnabledStyles.iconText}>
{t('flipCamera')}
</Text>
</Centered>
</Row>
)}
</Centered>
</Column>
);
};
export default FaceCompare;
interface FaceCompareProps {
whichCamera: CameraType;
setCameraRef:(node: Camera) => void;
isCapturing: boolean;
isVerifying: boolean;
service: any;
t: (key: string) => string;
}