react-native-timacare 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/assets/img/blink.png +0 -0
- package/lib/commonjs/assets/img/down.png +0 -0
- package/lib/commonjs/assets/img/left.png +0 -0
- package/lib/commonjs/assets/img/mouth.png +0 -0
- package/lib/commonjs/assets/img/right.png +0 -0
- package/lib/commonjs/assets/img/up.png +0 -0
- package/lib/commonjs/screens/full-submit/selfie.js +1 -1
- package/lib/commonjs/screens/full-submit/selfie.js.flow +2 -1
- package/lib/commonjs/screens/full-submit/selfie.js.map +1 -1
- package/lib/commonjs/screens/home/index.js +1 -1
- package/lib/commonjs/screens/home/index.js.flow +1 -0
- package/lib/commonjs/screens/home/index.js.map +1 -1
- package/lib/commonjs/screens/liveness/LivenessStore.js +1 -1
- package/lib/commonjs/screens/liveness/LivenessStore.js.flow +146 -0
- package/lib/commonjs/screens/liveness/LivenessStore.js.map +1 -1
- package/lib/commonjs/screens/liveness/index.js +1 -1
- package/lib/commonjs/screens/liveness/index.js.flow +4 -0
- package/lib/commonjs/screens/liveness/index.js.map +1 -1
- package/lib/commonjs/screens/liveness-v2/index.js +2 -0
- package/lib/commonjs/screens/liveness-v2/index.js.flow +598 -0
- package/lib/commonjs/screens/liveness-v2/index.js.map +1 -0
- package/lib/commonjs/screens/mrz-scanner/index.js +1 -1
- package/lib/commonjs/screens/mrz-scanner/index.js.flow +1 -0
- package/lib/commonjs/screens/mrz-scanner/index.js.map +1 -1
- package/lib/commonjs/screens/selfie/index.js +1 -1
- package/lib/commonjs/screens/selfie/index.js.flow +12 -2
- package/lib/commonjs/screens/selfie/index.js.map +1 -1
- package/lib/commonjs/services/api/api.js +1 -1
- package/lib/commonjs/services/api/api.js.flow +68 -0
- package/lib/commonjs/services/api/api.js.map +1 -1
- package/lib/module/assets/img/blink.png +0 -0
- package/lib/module/assets/img/down.png +0 -0
- package/lib/module/assets/img/left.png +0 -0
- package/lib/module/assets/img/mouth.png +0 -0
- package/lib/module/assets/img/right.png +0 -0
- package/lib/module/assets/img/up.png +0 -0
- package/lib/module/screens/full-submit/selfie.js +1 -1
- package/lib/module/screens/full-submit/selfie.js.map +1 -1
- package/lib/module/screens/home/index.js +1 -1
- package/lib/module/screens/home/index.js.map +1 -1
- package/lib/module/screens/liveness/LivenessStore.js +1 -1
- package/lib/module/screens/liveness/LivenessStore.js.map +1 -1
- package/lib/module/screens/liveness/index.js +1 -1
- package/lib/module/screens/liveness/index.js.map +1 -1
- package/lib/module/screens/liveness-v2/index.js +2 -0
- package/lib/module/screens/liveness-v2/index.js.map +1 -0
- package/lib/module/screens/mrz-scanner/index.js +1 -1
- package/lib/module/screens/mrz-scanner/index.js.map +1 -1
- package/lib/module/screens/selfie/index.js +1 -1
- package/lib/module/screens/selfie/index.js.map +1 -1
- package/lib/module/services/api/api.js +1 -1
- package/lib/module/services/api/api.js.map +1 -1
- package/lib/typescript/screens/full-submit/selfie.d.ts.map +1 -1
- package/lib/typescript/screens/home/index.d.ts.map +1 -1
- package/lib/typescript/screens/liveness/LivenessStore.d.ts +7 -0
- package/lib/typescript/screens/liveness/LivenessStore.d.ts.map +1 -1
- package/lib/typescript/screens/liveness/index.d.ts.map +1 -1
- package/lib/typescript/screens/liveness-v2/index.d.ts +2 -0
- package/lib/typescript/screens/liveness-v2/index.d.ts.map +1 -0
- package/lib/typescript/screens/mrz-scanner/index.d.ts.map +1 -1
- package/lib/typescript/screens/selfie/index.d.ts.map +1 -1
- package/lib/typescript/services/api/api.d.ts +64 -0
- package/lib/typescript/services/api/api.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/assets/img/blink.png +0 -0
- package/src/assets/img/down.png +0 -0
- package/src/assets/img/left.png +0 -0
- package/src/assets/img/mouth.png +0 -0
- package/src/assets/img/right.png +0 -0
- package/src/assets/img/up.png +0 -0
- package/src/screens/full-submit/selfie.tsx +2 -1
- package/src/screens/home/index.tsx +1 -0
- package/src/screens/liveness/LivenessStore.tsx +146 -0
- package/src/screens/liveness/index.tsx +4 -0
- package/src/screens/liveness-v2/index.tsx +598 -0
- package/src/screens/mrz-scanner/index.tsx +1 -0
- package/src/screens/selfie/index.tsx +12 -2
- package/src/services/api/api.ts +68 -0
|
@@ -0,0 +1,598 @@
|
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
import React, { useRef, useState } from 'react';
|
|
3
|
+
import { CommonActions, useNavigation } from '@react-navigation/native';
|
|
4
|
+
import { Observer, observer } from 'mobx-react-lite';
|
|
5
|
+
import {
|
|
6
|
+
ActivityIndicator,
|
|
7
|
+
Alert,
|
|
8
|
+
Dimensions,
|
|
9
|
+
Image,
|
|
10
|
+
Modal,
|
|
11
|
+
Platform,
|
|
12
|
+
StyleSheet,
|
|
13
|
+
TouchableOpacity,
|
|
14
|
+
View,
|
|
15
|
+
} from 'react-native';
|
|
16
|
+
import CircularProgress from 'react-native-circular-progress-indicator';
|
|
17
|
+
import RNFS, { CachesDirectoryPath } from 'react-native-fs';
|
|
18
|
+
import { RNFFmpeg } from 'react-native-ffmpeg';
|
|
19
|
+
import {
|
|
20
|
+
PERMISSIONS,
|
|
21
|
+
RESULTS,
|
|
22
|
+
openSettings,
|
|
23
|
+
request,
|
|
24
|
+
} from 'react-native-permissions';
|
|
25
|
+
import DeviceInfo from 'react-native-device-info';
|
|
26
|
+
import { IconBackWhite, IconEkyc } from '../../assets/icons';
|
|
27
|
+
import { MText } from '../../components/MText';
|
|
28
|
+
import { RNCamera } from 'react-native-camera';
|
|
29
|
+
import livenessStore from '../liveness/LivenessStore';
|
|
30
|
+
import { commonStyles } from '../CommonStyles';
|
|
31
|
+
import { ScreenNames } from '../../navigation';
|
|
32
|
+
import { color } from '../../theme';
|
|
33
|
+
|
|
34
|
+
const { width: windowWidth } = Dimensions.get('window');
|
|
35
|
+
|
|
36
|
+
const PREVIEW_SIZE = 320;
|
|
37
|
+
const PREVIEW_RECT = {
|
|
38
|
+
minX: (windowWidth - PREVIEW_SIZE) / 2,
|
|
39
|
+
minY: 240,
|
|
40
|
+
width: PREVIEW_SIZE,
|
|
41
|
+
height: PREVIEW_SIZE,
|
|
42
|
+
};
|
|
43
|
+
export const LivenessV2 = observer(function LivenessV2(props: any) {
|
|
44
|
+
const loan = props.route.params?.loan;
|
|
45
|
+
const navigation = useNavigation();
|
|
46
|
+
const cameraRef = useRef<any>(null);
|
|
47
|
+
const interval = useRef<any>(null);
|
|
48
|
+
const [passPermission, setPassPermission] = useState(false);
|
|
49
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
50
|
+
|
|
51
|
+
const renderHint = (key: string) => {
|
|
52
|
+
switch (key) {
|
|
53
|
+
case 'blink':
|
|
54
|
+
return 'Nhắm mắt trong 3 giây';
|
|
55
|
+
case 'right':
|
|
56
|
+
return 'Quay sang phải 3 giây';
|
|
57
|
+
case 'left':
|
|
58
|
+
return 'Quay sang trái 3 giây';
|
|
59
|
+
case 'up':
|
|
60
|
+
return 'Nhìn lên trên 3 giây';
|
|
61
|
+
case 'down':
|
|
62
|
+
return 'Nhìn xuống dưới 3 giây';
|
|
63
|
+
case 'mouth':
|
|
64
|
+
return 'Há miệng trong 3 giây';
|
|
65
|
+
default:
|
|
66
|
+
return '';
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const renderImg = (key: string) => {
|
|
70
|
+
switch (key) {
|
|
71
|
+
case 'blink':
|
|
72
|
+
return (
|
|
73
|
+
<Image
|
|
74
|
+
source={require('../../assets/img/blink.png')}
|
|
75
|
+
style={{
|
|
76
|
+
height: 24,
|
|
77
|
+
width: 50,
|
|
78
|
+
resizeMode: 'contain',
|
|
79
|
+
marginTop: 40,
|
|
80
|
+
}}
|
|
81
|
+
/>
|
|
82
|
+
);
|
|
83
|
+
case 'right':
|
|
84
|
+
return (
|
|
85
|
+
<Image
|
|
86
|
+
source={require('../../assets/img/right.png')}
|
|
87
|
+
style={{
|
|
88
|
+
height: 24,
|
|
89
|
+
width: 50,
|
|
90
|
+
resizeMode: 'contain',
|
|
91
|
+
marginTop: 40,
|
|
92
|
+
}}
|
|
93
|
+
/>
|
|
94
|
+
);
|
|
95
|
+
case 'left':
|
|
96
|
+
return (
|
|
97
|
+
<Image
|
|
98
|
+
source={require('../../assets/img/left.png')}
|
|
99
|
+
style={{
|
|
100
|
+
height: 24,
|
|
101
|
+
width: 50,
|
|
102
|
+
resizeMode: 'contain',
|
|
103
|
+
marginTop: 40,
|
|
104
|
+
}}
|
|
105
|
+
/>
|
|
106
|
+
);
|
|
107
|
+
case 'up':
|
|
108
|
+
return (
|
|
109
|
+
<Image
|
|
110
|
+
source={require('../../assets/img/up.png')}
|
|
111
|
+
style={{
|
|
112
|
+
height: 24,
|
|
113
|
+
width: 50,
|
|
114
|
+
resizeMode: 'contain',
|
|
115
|
+
marginTop: 40,
|
|
116
|
+
}}
|
|
117
|
+
/>
|
|
118
|
+
);
|
|
119
|
+
case 'down':
|
|
120
|
+
return (
|
|
121
|
+
<Image
|
|
122
|
+
source={require('../../assets/img/down.png')}
|
|
123
|
+
style={{
|
|
124
|
+
height: 24,
|
|
125
|
+
width: 50,
|
|
126
|
+
resizeMode: 'contain',
|
|
127
|
+
marginTop: 40,
|
|
128
|
+
}}
|
|
129
|
+
/>
|
|
130
|
+
);
|
|
131
|
+
case 'mouth':
|
|
132
|
+
return (
|
|
133
|
+
<Image
|
|
134
|
+
source={require('../../assets/img/mouth.png')}
|
|
135
|
+
style={{
|
|
136
|
+
height: 24,
|
|
137
|
+
width: 50,
|
|
138
|
+
resizeMode: 'contain',
|
|
139
|
+
marginTop: 40,
|
|
140
|
+
}}
|
|
141
|
+
/>
|
|
142
|
+
);
|
|
143
|
+
default:
|
|
144
|
+
return <></>;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const requestPermissions = () => {
|
|
149
|
+
request(
|
|
150
|
+
Platform.OS === 'ios'
|
|
151
|
+
? PERMISSIONS.IOS.CAMERA
|
|
152
|
+
: PERMISSIONS.ANDROID.CAMERA
|
|
153
|
+
).then((result) => {
|
|
154
|
+
switch (result) {
|
|
155
|
+
case RESULTS.UNAVAILABLE:
|
|
156
|
+
console.log(
|
|
157
|
+
'This feature is not available (on this device / in this context)'
|
|
158
|
+
);
|
|
159
|
+
Alert.alert(
|
|
160
|
+
'Thông báo',
|
|
161
|
+
'Máy ảnh trên thiết bị không tương thích.\nVui lòng kiểm tra lại thiết bị!',
|
|
162
|
+
[{ text: 'Đồng ý' }]
|
|
163
|
+
);
|
|
164
|
+
break;
|
|
165
|
+
case RESULTS.DENIED:
|
|
166
|
+
console.log(
|
|
167
|
+
'The permission has not been requested / is denied but requestable'
|
|
168
|
+
);
|
|
169
|
+
Alert.alert(
|
|
170
|
+
'Thông báo',
|
|
171
|
+
'Bạn đã từ chối quyền máy ảnh. Vui lòng cấp quyền máy ảnh để tiếp tục!',
|
|
172
|
+
[
|
|
173
|
+
{
|
|
174
|
+
text: 'Đồng ý',
|
|
175
|
+
onPress: () => {
|
|
176
|
+
if (Platform.OS === 'ios') {
|
|
177
|
+
openSettings();
|
|
178
|
+
} else {
|
|
179
|
+
requestPermissions();
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
]
|
|
184
|
+
);
|
|
185
|
+
break;
|
|
186
|
+
|
|
187
|
+
case RESULTS.GRANTED:
|
|
188
|
+
console.log('The permission is granted');
|
|
189
|
+
setPassPermission(true);
|
|
190
|
+
break;
|
|
191
|
+
case RESULTS.BLOCKED:
|
|
192
|
+
console.log('The permission is denied and not requestable anymore');
|
|
193
|
+
Alert.alert(
|
|
194
|
+
'Thông báo',
|
|
195
|
+
'Bạn đã từ chối quyền máy ảnh. Vui lòng cấp quyền máy ảnh để tiếp tục!',
|
|
196
|
+
[
|
|
197
|
+
{
|
|
198
|
+
text: 'Đồng ý',
|
|
199
|
+
onPress: () => {
|
|
200
|
+
if (Platform.OS === 'ios') {
|
|
201
|
+
openSettings();
|
|
202
|
+
} else {
|
|
203
|
+
openSettings();
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
]
|
|
208
|
+
);
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
let second = 3;
|
|
215
|
+
|
|
216
|
+
const start = () => {
|
|
217
|
+
requestPermissions();
|
|
218
|
+
livenessStore.getListAction(() => {
|
|
219
|
+
if (passPermission) {
|
|
220
|
+
interval.current = setInterval(() => {
|
|
221
|
+
second--;
|
|
222
|
+
if (second === 0) {
|
|
223
|
+
clearInterval(interval.current);
|
|
224
|
+
startLiveness();
|
|
225
|
+
}
|
|
226
|
+
}, 1000);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
useEffect(() => {
|
|
232
|
+
start();
|
|
233
|
+
}, [passPermission]);
|
|
234
|
+
|
|
235
|
+
const uploadLiveness = async (template: any) => {
|
|
236
|
+
try {
|
|
237
|
+
const listImage = [];
|
|
238
|
+
for (let i = 1; i <= 3; i++) {
|
|
239
|
+
const file = 'file://' + template + `_img_${('000' + i).slice(-4)}.jpg`;
|
|
240
|
+
const imgBase64 = await RNFS.readFile(file, 'base64');
|
|
241
|
+
listImage.push(imgBase64);
|
|
242
|
+
}
|
|
243
|
+
await livenessStore.verifyLiveness(
|
|
244
|
+
loan?.id,
|
|
245
|
+
listImage,
|
|
246
|
+
() => {
|
|
247
|
+
setTimeout(() => {
|
|
248
|
+
startLiveness();
|
|
249
|
+
}, 2000);
|
|
250
|
+
setIsLoading(false);
|
|
251
|
+
},
|
|
252
|
+
() => {
|
|
253
|
+
setTimeout(() => {
|
|
254
|
+
startLiveness();
|
|
255
|
+
}, 2000);
|
|
256
|
+
setIsLoading(false);
|
|
257
|
+
}
|
|
258
|
+
);
|
|
259
|
+
} catch (error) {
|
|
260
|
+
setIsLoading(false);
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
const captureFromVideo = async (uri: any) => {
|
|
265
|
+
try {
|
|
266
|
+
const time = new Date().getTime();
|
|
267
|
+
const template = CachesDirectoryPath + '/' + time;
|
|
268
|
+
const output = template + '_img_%04d.jpg';
|
|
269
|
+
RNFFmpeg.execute(`-i ${uri} -r 2 ${output}`)
|
|
270
|
+
.then((result) => {
|
|
271
|
+
console.log(`FFmpeg process exited with rc=${result}.`);
|
|
272
|
+
if (result === 0) {
|
|
273
|
+
uploadLiveness(template);
|
|
274
|
+
console.log('FFmpeg template', template);
|
|
275
|
+
} else {
|
|
276
|
+
setIsLoading(false);
|
|
277
|
+
Alert.alert(
|
|
278
|
+
'Thông báo',
|
|
279
|
+
'Quá trình xử lý hình ảnh bị lỗi. Vui lòng thử lại.',
|
|
280
|
+
[
|
|
281
|
+
{
|
|
282
|
+
text: 'Đồng ý',
|
|
283
|
+
onPress: () => {
|
|
284
|
+
startLiveness;
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
]
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
})
|
|
291
|
+
.catch((err) => {
|
|
292
|
+
console.log(err);
|
|
293
|
+
});
|
|
294
|
+
} catch (error) {
|
|
295
|
+
setIsLoading(false);
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
const startLiveness = async () => {
|
|
300
|
+
livenessStore.ekycSuccess = false;
|
|
301
|
+
if (livenessStore.listAction.length === 0) {
|
|
302
|
+
livenessStore.ekycSuccess = true;
|
|
303
|
+
livenessStore.saveLiveness(loan.id);
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
if (cameraRef) {
|
|
307
|
+
const videoFile =
|
|
308
|
+
CachesDirectoryPath + '/' + new Date().getTime() + '.mp4';
|
|
309
|
+
const options = {
|
|
310
|
+
quality: RNCamera.Constants.VideoQuality['720p'],
|
|
311
|
+
maxDuration: 3,
|
|
312
|
+
path: videoFile,
|
|
313
|
+
/** iOS only */
|
|
314
|
+
codec: 'H264',
|
|
315
|
+
fps: 30,
|
|
316
|
+
};
|
|
317
|
+
const data = await cameraRef.current.recordAsync(options);
|
|
318
|
+
if (data.uri) {
|
|
319
|
+
setIsLoading(true);
|
|
320
|
+
captureFromVideo(data.uri);
|
|
321
|
+
} else {
|
|
322
|
+
Alert.alert('Thông báo', 'Quá trình xác thực thất bại', [
|
|
323
|
+
{
|
|
324
|
+
text: 'Thử lại',
|
|
325
|
+
onPress: () => {
|
|
326
|
+
startLiveness();
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
]);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
return (
|
|
334
|
+
<View style={styles.container}>
|
|
335
|
+
<TouchableOpacity
|
|
336
|
+
onPress={() => {
|
|
337
|
+
navigation.goBack();
|
|
338
|
+
}}
|
|
339
|
+
style={{
|
|
340
|
+
position: 'absolute',
|
|
341
|
+
left: 16,
|
|
342
|
+
top: DeviceInfo.hasNotch() ? 70 : 16,
|
|
343
|
+
width: 40,
|
|
344
|
+
height: 40,
|
|
345
|
+
zIndex: 1000,
|
|
346
|
+
}}
|
|
347
|
+
>
|
|
348
|
+
<IconBackWhite />
|
|
349
|
+
</TouchableOpacity>
|
|
350
|
+
<View style={styles.topOverlay}>
|
|
351
|
+
<MText
|
|
352
|
+
style={{
|
|
353
|
+
color: 'white',
|
|
354
|
+
fontWeight: '600',
|
|
355
|
+
fontSize: 16,
|
|
356
|
+
}}
|
|
357
|
+
>
|
|
358
|
+
Xác thực khuôn mặt
|
|
359
|
+
</MText>
|
|
360
|
+
<Observer>
|
|
361
|
+
{() => (
|
|
362
|
+
<>
|
|
363
|
+
{isLoading ? (
|
|
364
|
+
<View style={{ marginTop: 24 }}>
|
|
365
|
+
<MText
|
|
366
|
+
style={{
|
|
367
|
+
textAlign: 'center',
|
|
368
|
+
fontSize: 16,
|
|
369
|
+
color: 'white',
|
|
370
|
+
}}
|
|
371
|
+
>
|
|
372
|
+
Đang xác thực
|
|
373
|
+
</MText>
|
|
374
|
+
<ActivityIndicator
|
|
375
|
+
size={'large'}
|
|
376
|
+
color={'white'}
|
|
377
|
+
style={{ marginTop: 8 }}
|
|
378
|
+
/>
|
|
379
|
+
</View>
|
|
380
|
+
) : (
|
|
381
|
+
<></>
|
|
382
|
+
)}
|
|
383
|
+
</>
|
|
384
|
+
)}
|
|
385
|
+
</Observer>
|
|
386
|
+
</View>
|
|
387
|
+
|
|
388
|
+
<View style={styles.preview}>
|
|
389
|
+
<RNCamera
|
|
390
|
+
playSoundOnCapture={false}
|
|
391
|
+
ref={cameraRef}
|
|
392
|
+
style={StyleSheet.absoluteFill}
|
|
393
|
+
captureAudio={false}
|
|
394
|
+
type={RNCamera.Constants.Type.front}
|
|
395
|
+
androidCameraPermissionOptions={{
|
|
396
|
+
title: 'Permission to use camera',
|
|
397
|
+
message: 'We need your permission to use your camera',
|
|
398
|
+
buttonPositive: 'Ok',
|
|
399
|
+
buttonNegative: 'Cancel',
|
|
400
|
+
}}
|
|
401
|
+
androidRecordAudioPermissionOptions={{
|
|
402
|
+
title: 'Permission to use audio recording',
|
|
403
|
+
message: 'We need your permission to use your audio',
|
|
404
|
+
buttonPositive: 'Ok',
|
|
405
|
+
buttonNegative: 'Cancel',
|
|
406
|
+
}}
|
|
407
|
+
autoFocus="on"
|
|
408
|
+
>
|
|
409
|
+
<View
|
|
410
|
+
style={{
|
|
411
|
+
height: '100%',
|
|
412
|
+
width: '100%',
|
|
413
|
+
justifyContent: 'center',
|
|
414
|
+
alignItems: 'center',
|
|
415
|
+
}}
|
|
416
|
+
>
|
|
417
|
+
{renderImg(livenessStore.hintAction)}
|
|
418
|
+
<MText
|
|
419
|
+
style={{
|
|
420
|
+
color: 'white',
|
|
421
|
+
fontSize: 16,
|
|
422
|
+
marginTop: 8,
|
|
423
|
+
fontWeight: '400',
|
|
424
|
+
}}
|
|
425
|
+
>
|
|
426
|
+
{renderHint(livenessStore.hintAction)}
|
|
427
|
+
</MText>
|
|
428
|
+
</View>
|
|
429
|
+
</RNCamera>
|
|
430
|
+
</View>
|
|
431
|
+
|
|
432
|
+
<View style={styles.circularProgress}>
|
|
433
|
+
<CircularProgress
|
|
434
|
+
dashedStrokeConfig={{
|
|
435
|
+
count: 100,
|
|
436
|
+
width: 7,
|
|
437
|
+
}}
|
|
438
|
+
value={
|
|
439
|
+
livenessStore.listAction.length === 3
|
|
440
|
+
? 0
|
|
441
|
+
: livenessStore.listAction.length === 2
|
|
442
|
+
? 100 / 3
|
|
443
|
+
: livenessStore.listAction.length === 1
|
|
444
|
+
? (2 / 3) * 100
|
|
445
|
+
: 100
|
|
446
|
+
}
|
|
447
|
+
radius={PREVIEW_SIZE / 2}
|
|
448
|
+
inActiveStrokeOpacity={0.5}
|
|
449
|
+
activeStrokeWidth={13}
|
|
450
|
+
inActiveStrokeWidth={13}
|
|
451
|
+
showProgressValue={false}
|
|
452
|
+
activeStrokeColor="#F05123"
|
|
453
|
+
inActiveStrokeColor="#F05123"
|
|
454
|
+
duration={800}
|
|
455
|
+
/>
|
|
456
|
+
</View>
|
|
457
|
+
<Observer>
|
|
458
|
+
{() => (
|
|
459
|
+
<View style={styles.bottomOverlay}>
|
|
460
|
+
<MText style={styles.instructionText}>
|
|
461
|
+
Vui lòng điều chỉnh khuôn mặt nằm gọn trong vòng tròn ở trên
|
|
462
|
+
</MText>
|
|
463
|
+
</View>
|
|
464
|
+
)}
|
|
465
|
+
</Observer>
|
|
466
|
+
|
|
467
|
+
<Modal
|
|
468
|
+
visible={livenessStore.ekycSuccess}
|
|
469
|
+
animationType={'fade'}
|
|
470
|
+
transparent
|
|
471
|
+
>
|
|
472
|
+
<View
|
|
473
|
+
style={[
|
|
474
|
+
commonStyles.alignCenter,
|
|
475
|
+
commonStyles.justifyCenter,
|
|
476
|
+
{ backgroundColor: 'transparent', height: '100%' },
|
|
477
|
+
]}
|
|
478
|
+
>
|
|
479
|
+
<View
|
|
480
|
+
style={[
|
|
481
|
+
commonStyles.alignCenter,
|
|
482
|
+
commonStyles.justifyCenter,
|
|
483
|
+
{
|
|
484
|
+
backgroundColor: 'white',
|
|
485
|
+
borderRadius: 8,
|
|
486
|
+
padding: 16,
|
|
487
|
+
marginHorizontal: 16,
|
|
488
|
+
},
|
|
489
|
+
]}
|
|
490
|
+
>
|
|
491
|
+
<IconEkyc />
|
|
492
|
+
<MText
|
|
493
|
+
style={[
|
|
494
|
+
commonStyles.textNormalBold,
|
|
495
|
+
{ marginTop: 16, textAlign: 'center' },
|
|
496
|
+
]}
|
|
497
|
+
>
|
|
498
|
+
Chúc mừng bạn đã thực hiện xác thực khách hàng{'\n'}thành công.
|
|
499
|
+
</MText>
|
|
500
|
+
<TouchableOpacity
|
|
501
|
+
style={{
|
|
502
|
+
marginTop: 16,
|
|
503
|
+
backgroundColor: color.primary,
|
|
504
|
+
height: 40,
|
|
505
|
+
alignItems: 'center',
|
|
506
|
+
borderRadius: 30,
|
|
507
|
+
width: 150,
|
|
508
|
+
justifyContent: 'center',
|
|
509
|
+
}}
|
|
510
|
+
onPress={() => {
|
|
511
|
+
livenessStore.ekycSuccess = false;
|
|
512
|
+
navigation.dispatch(
|
|
513
|
+
CommonActions.reset({
|
|
514
|
+
index: 1,
|
|
515
|
+
routes: [{ name: ScreenNames.Main }],
|
|
516
|
+
})
|
|
517
|
+
);
|
|
518
|
+
}}
|
|
519
|
+
>
|
|
520
|
+
<MText style={[commonStyles.textNormalBold, { color: 'white' }]}>
|
|
521
|
+
Đồng ý
|
|
522
|
+
</MText>
|
|
523
|
+
</TouchableOpacity>
|
|
524
|
+
</View>
|
|
525
|
+
</View>
|
|
526
|
+
</Modal>
|
|
527
|
+
</View>
|
|
528
|
+
);
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
const styles = StyleSheet.create({
|
|
532
|
+
instructionText: {
|
|
533
|
+
color: 'white',
|
|
534
|
+
fontSize: 12,
|
|
535
|
+
textAlign: 'center',
|
|
536
|
+
paddingHorizontal: 50,
|
|
537
|
+
marginTop: 16,
|
|
538
|
+
},
|
|
539
|
+
bottomOverlay: {
|
|
540
|
+
marginTop: 24,
|
|
541
|
+
},
|
|
542
|
+
maskedView: {
|
|
543
|
+
flex: 1,
|
|
544
|
+
flexDirection: 'row',
|
|
545
|
+
height: '100%',
|
|
546
|
+
},
|
|
547
|
+
maskWrapper: {
|
|
548
|
+
backgroundColor: 'transparent',
|
|
549
|
+
flex: 1,
|
|
550
|
+
justifyContent: 'center',
|
|
551
|
+
alignItems: 'center',
|
|
552
|
+
},
|
|
553
|
+
mask: {
|
|
554
|
+
borderRadius: PREVIEW_SIZE / 2,
|
|
555
|
+
height: PREVIEW_SIZE - 10,
|
|
556
|
+
width: PREVIEW_SIZE - 10,
|
|
557
|
+
marginTop: PREVIEW_RECT.minY,
|
|
558
|
+
alignSelf: 'center',
|
|
559
|
+
},
|
|
560
|
+
container: {
|
|
561
|
+
flex: 1,
|
|
562
|
+
flexDirection: 'column',
|
|
563
|
+
backgroundColor: '#333333',
|
|
564
|
+
},
|
|
565
|
+
topOverlay: {
|
|
566
|
+
position: 'absolute',
|
|
567
|
+
top: DeviceInfo.hasNotch() ? 70 : 16,
|
|
568
|
+
right: 0,
|
|
569
|
+
left: 0,
|
|
570
|
+
justifyContent: 'center',
|
|
571
|
+
alignItems: 'center',
|
|
572
|
+
},
|
|
573
|
+
captureFrame: {
|
|
574
|
+
height: Dimensions.get('window').width - 50,
|
|
575
|
+
marginHorizontal: 16,
|
|
576
|
+
marginTop: '50%',
|
|
577
|
+
borderRadius: 50,
|
|
578
|
+
},
|
|
579
|
+
preview: {
|
|
580
|
+
width: PREVIEW_SIZE - 29,
|
|
581
|
+
height: PREVIEW_SIZE - 28,
|
|
582
|
+
marginTop: PREVIEW_RECT.minY + 14,
|
|
583
|
+
marginLeft: PREVIEW_RECT.minX + 14,
|
|
584
|
+
borderRadius: PREVIEW_SIZE / 2,
|
|
585
|
+
overflow: 'hidden',
|
|
586
|
+
},
|
|
587
|
+
circularProgress: {
|
|
588
|
+
width: PREVIEW_SIZE,
|
|
589
|
+
height: PREVIEW_SIZE,
|
|
590
|
+
marginTop: PREVIEW_RECT.minY,
|
|
591
|
+
marginLeft: PREVIEW_RECT.minX,
|
|
592
|
+
zIndex: 100,
|
|
593
|
+
position: 'absolute',
|
|
594
|
+
top: 0,
|
|
595
|
+
left: 0,
|
|
596
|
+
right: 0,
|
|
597
|
+
},
|
|
598
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_native","_mobxReactLite","_reactNative","_reactNativeCircularProgressIndicator","_interopRequireDefault","_reactNativeFs","_reactNativeFfmpeg","_reactNativePermissions","_reactNativeDeviceInfo","_icons","_MText","_reactNativeCamera","_LivenessStore","_CommonStyles","_navigation","_theme","_jsxFileName","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_Dimensions$get","Dimensions","windowWidth","width","PREVIEW_SIZE","PREVIEW_RECT","minX","minY","height","LivenessV2","exports","observer","props","_props$route$params","_this","loan","route","params","navigation","useNavigation","cameraRef","useRef","interval","_useState","useState","_useState2","_slicedToArray2","passPermission","setPassPermission","_useState3","_useState4","isLoading","setIsLoading","renderHint","key","renderImg","createElement","Image","source","style","resizeMode","marginTop","__self","__source","fileName","lineNumber","columnNumber","Fragment","requestPermissions","request","Platform","OS","PERMISSIONS","IOS","CAMERA","ANDROID","then","result","RESULTS","UNAVAILABLE","console","log","Alert","alert","text","DENIED","onPress","openSettings","GRANTED","BLOCKED","second","start","livenessStore","getListAction","current","setInterval","clearInterval","startLiveness","useEffect","uploadLiveness","_callee","template","listImage","file","imgBase64","_regenerator","async","_callee$","_context","prev","next","slice","awrap","RNFS","readFile","sent","push","verifyLiveness","id","setTimeout","t0","stop","Promise","captureFromVideo","_callee2","uri","time","output","_callee2$","_context2","Date","getTime","CachesDirectoryPath","RNFFmpeg","execute","catch","err","error","_callee3","videoFile","options","data","_callee3$","_context3","ekycSuccess","listAction","length","saveLiveness","abrupt","quality","RNCamera","Constants","VideoQuality","maxDuration","path","codec","fps","recordAsync","View","styles","container","TouchableOpacity","goBack","position","left","top","DeviceInfo","hasNotch","zIndex","IconBackWhite","topOverlay","MText","color","fontWeight","fontSize","Observer","textAlign","ActivityIndicator","size","preview","playSoundOnCapture","ref","StyleSheet","absoluteFill","captureAudio","type","Type","front","androidCameraPermissionOptions","title","message","buttonPositive","buttonNegative","androidRecordAudioPermissionOptions","autoFocus","justifyContent","alignItems","hintAction","circularProgress","dashedStrokeConfig","count","value","radius","inActiveStrokeOpacity","activeStrokeWidth","inActiveStrokeWidth","showProgressValue","activeStrokeColor","inActiveStrokeColor","duration","bottomOverlay","instructionText","Modal","visible","animationType","transparent","commonStyles","alignCenter","justifyCenter","backgroundColor","borderRadius","padding","marginHorizontal","IconEkyc","textNormalBold","primary","dispatch","CommonActions","reset","index","routes","name","ScreenNames","Main","create","paddingHorizontal","maskedView","flex","flexDirection","maskWrapper","mask","alignSelf","right","captureFrame","marginLeft","overflow"],"sourceRoot":"../../../../src","sources":["screens/liveness-v2/index.tsx"],"mappings":"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"}
|