@hexar/biometric-identity-sdk-react-native 1.7.0 → 1.9.0
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/dist/components/ProfilePictureCapture.d.ts.map +1 -1
- package/dist/components/ProfilePictureCapture.js +7 -0
- package/dist/components/ValidationProgress.d.ts.map +1 -1
- package/dist/components/ValidationProgress.js +9 -2
- package/dist/components/VideoRecorder.js +1 -1
- package/package.json +1 -1
- package/src/components/ProfilePictureCapture.tsx +10 -0
- package/src/components/ValidationProgress.tsx +12 -2
- package/src/components/VideoRecorder.tsx +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePictureCapture.d.ts","sourceRoot":"","sources":["../../src/components/ProfilePictureCapture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAWxE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAmC,cAAc,EAAsB,MAAM,oCAAoC,CAAC;AAGzJ,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"ProfilePictureCapture.d.ts","sourceRoot":"","sources":["../../src/components/ProfilePictureCapture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAWxE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAmC,cAAc,EAAsB,MAAM,oCAAoC,CAAC;AAGzJ,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAkWtE,CAAC;AA4EF,eAAe,qBAAqB,CAAC"}
|
|
@@ -284,6 +284,7 @@ const ProfilePictureCapture = ({ onComplete, onError, onCancel, theme, language,
|
|
|
284
284
|
react_1.default.createElement(react_native_1.ActivityIndicator, { size: "large", color: theme?.primaryColor || '#4f46e5' }),
|
|
285
285
|
react_1.default.createElement(react_native_1.Text, { style: [styles.progressTitle, { color: theme?.textColor || '#1e1b4b' }] }, strings.validation.title || strings.liveness.processing || strings.validation.checkingLiveness || 'Validating Profile Picture'),
|
|
286
286
|
react_1.default.createElement(react_native_1.Text, { style: [styles.progressStatusText, { color: theme?.secondaryTextColor || '#64748b' }] }, strings.validation.validatingFace || strings.liveness.processing || 'Validando rostro...'),
|
|
287
|
+
react_1.default.createElement(react_native_1.Text, { style: [styles.progressDoNotLockText, { color: theme?.secondaryTextColor || '#64748b' }] }, strings.validation.doNotLockScreen || 'No bloquees la pantalla'),
|
|
287
288
|
react_1.default.createElement(react_native_1.View, { style: styles.progressBarContainer },
|
|
288
289
|
react_1.default.createElement(react_native_1.View, { style: styles.progressBar },
|
|
289
290
|
react_1.default.createElement(react_native_1.Animated.View, { style: [
|
|
@@ -348,6 +349,12 @@ const styles = react_native_1.StyleSheet.create({
|
|
|
348
349
|
},
|
|
349
350
|
progressStatusText: {
|
|
350
351
|
fontSize: 16,
|
|
352
|
+
marginBottom: 8,
|
|
353
|
+
textAlign: 'center',
|
|
354
|
+
},
|
|
355
|
+
progressDoNotLockText: {
|
|
356
|
+
fontSize: 14,
|
|
357
|
+
fontWeight: '600',
|
|
351
358
|
marginBottom: 32,
|
|
352
359
|
textAlign: 'center',
|
|
353
360
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationProgress.d.ts","sourceRoot":"","sources":["../../src/components/ValidationProgress.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAA2B,MAAM,oCAAoC,CAAC;AAE7G,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ValidationProgress.d.ts","sourceRoot":"","sources":["../../src/components/ValidationProgress.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAA2B,MAAM,oCAAoC,CAAC;AAE7G,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAyGhE,CAAC;AA2DF,eAAe,kBAAkB,CAAC"}
|
|
@@ -55,10 +55,10 @@ const ValidationProgress = ({ progress, theme, language = 'en', }) => {
|
|
|
55
55
|
// Start animation from 0 to 90% over 60 seconds (1 minute) - only once
|
|
56
56
|
if (!hasStartedAnimation.current) {
|
|
57
57
|
hasStartedAnimation.current = true;
|
|
58
|
-
// Start animation to 90% over
|
|
58
|
+
// Start animation to 90% over 70 seconds, regardless of backend progress
|
|
59
59
|
animationRef.current = react_native_1.Animated.timing(animatedProgress, {
|
|
60
60
|
toValue: 90,
|
|
61
|
-
duration:
|
|
61
|
+
duration: 70000, // 70 seconds
|
|
62
62
|
useNativeDriver: false,
|
|
63
63
|
});
|
|
64
64
|
animationRef.current.start();
|
|
@@ -93,6 +93,7 @@ const ValidationProgress = ({ progress, theme, language = 'en', }) => {
|
|
|
93
93
|
react_1.default.createElement(react_native_1.ActivityIndicator, { size: "large", color: theme?.primaryColor || '#6366F1' }),
|
|
94
94
|
react_1.default.createElement(react_native_1.Text, { style: [styles.title, { color: theme?.textColor || '#000000' }] }, strings.validation.title || 'Validating Identity'),
|
|
95
95
|
react_1.default.createElement(react_native_1.Text, { style: [styles.statusText, { color: theme?.secondaryTextColor || '#6B7280' }] }, strings.validation.validatingDocumentAndFace || 'Validando documento y rostro...'),
|
|
96
|
+
react_1.default.createElement(react_native_1.Text, { style: [styles.doNotLockText, { color: theme?.secondaryTextColor || '#6B7280' }] }, strings.validation.doNotLockScreen || 'No bloquees la pantalla'),
|
|
96
97
|
react_1.default.createElement(react_native_1.View, { style: styles.progressBarContainer },
|
|
97
98
|
react_1.default.createElement(react_native_1.View, { style: styles.progressBar },
|
|
98
99
|
react_1.default.createElement(react_native_1.Animated.View, { style: [
|
|
@@ -127,6 +128,12 @@ const styles = react_native_1.StyleSheet.create({
|
|
|
127
128
|
},
|
|
128
129
|
statusText: {
|
|
129
130
|
fontSize: 16,
|
|
131
|
+
marginBottom: 8,
|
|
132
|
+
textAlign: 'center',
|
|
133
|
+
},
|
|
134
|
+
doNotLockText: {
|
|
135
|
+
fontSize: 14,
|
|
136
|
+
fontWeight: '600',
|
|
130
137
|
marginBottom: 32,
|
|
131
138
|
textAlign: 'center',
|
|
132
139
|
},
|
|
@@ -347,7 +347,7 @@ const VideoRecorder = ({ theme, language, duration, instructions, challenges: pr
|
|
|
347
347
|
framesRef.current = [];
|
|
348
348
|
let consecutiveErrors = 0;
|
|
349
349
|
const maxConsecutiveErrors = 10;
|
|
350
|
-
const MAX_FRAMES =
|
|
350
|
+
const MAX_FRAMES = 150;
|
|
351
351
|
// Serial capture: each frame is captured only after the previous one
|
|
352
352
|
// finishes, preventing overlapping takePhoto() calls that cause the
|
|
353
353
|
// camera to throw "busy" errors and kill the capture loop.
|
package/package.json
CHANGED
|
@@ -315,6 +315,10 @@ export const ProfilePictureCapture: React.FC<ProfilePictureCaptureProps> = ({
|
|
|
315
315
|
{(strings.validation as any).validatingFace || strings.liveness.processing || 'Validando rostro...'}
|
|
316
316
|
</Text>
|
|
317
317
|
|
|
318
|
+
<Text style={[styles.progressDoNotLockText, { color: theme?.secondaryTextColor || '#64748b' }]}>
|
|
319
|
+
{strings.validation.doNotLockScreen || 'No bloquees la pantalla'}
|
|
320
|
+
</Text>
|
|
321
|
+
|
|
318
322
|
{/* Progress Bar */}
|
|
319
323
|
<View style={styles.progressBarContainer}>
|
|
320
324
|
<View style={styles.progressBar}>
|
|
@@ -417,6 +421,12 @@ const styles = StyleSheet.create({
|
|
|
417
421
|
},
|
|
418
422
|
progressStatusText: {
|
|
419
423
|
fontSize: 16,
|
|
424
|
+
marginBottom: 8,
|
|
425
|
+
textAlign: 'center',
|
|
426
|
+
},
|
|
427
|
+
progressDoNotLockText: {
|
|
428
|
+
fontSize: 14,
|
|
429
|
+
fontWeight: '600',
|
|
420
430
|
marginBottom: 32,
|
|
421
431
|
textAlign: 'center',
|
|
422
432
|
},
|
|
@@ -40,10 +40,10 @@ export const ValidationProgress: React.FC<ValidationProgressProps> = ({
|
|
|
40
40
|
if (!hasStartedAnimation.current) {
|
|
41
41
|
hasStartedAnimation.current = true;
|
|
42
42
|
|
|
43
|
-
// Start animation to 90% over
|
|
43
|
+
// Start animation to 90% over 70 seconds, regardless of backend progress
|
|
44
44
|
animationRef.current = Animated.timing(animatedProgress, {
|
|
45
45
|
toValue: 90,
|
|
46
|
-
duration:
|
|
46
|
+
duration: 70000, // 70 seconds
|
|
47
47
|
useNativeDriver: false,
|
|
48
48
|
});
|
|
49
49
|
|
|
@@ -96,6 +96,10 @@ export const ValidationProgress: React.FC<ValidationProgressProps> = ({
|
|
|
96
96
|
{strings.validation.validatingDocumentAndFace || 'Validando documento y rostro...'}
|
|
97
97
|
</Text>
|
|
98
98
|
|
|
99
|
+
<Text style={[styles.doNotLockText, { color: theme?.secondaryTextColor || '#6B7280' }]}>
|
|
100
|
+
{strings.validation.doNotLockScreen || 'No bloquees la pantalla'}
|
|
101
|
+
</Text>
|
|
102
|
+
|
|
99
103
|
{/* Progress Bar */}
|
|
100
104
|
<View style={styles.progressBarContainer}>
|
|
101
105
|
<View style={styles.progressBar}>
|
|
@@ -141,6 +145,12 @@ const styles = StyleSheet.create({
|
|
|
141
145
|
},
|
|
142
146
|
statusText: {
|
|
143
147
|
fontSize: 16,
|
|
148
|
+
marginBottom: 8,
|
|
149
|
+
textAlign: 'center',
|
|
150
|
+
},
|
|
151
|
+
doNotLockText: {
|
|
152
|
+
fontSize: 14,
|
|
153
|
+
fontWeight: '600',
|
|
144
154
|
marginBottom: 32,
|
|
145
155
|
textAlign: 'center',
|
|
146
156
|
},
|
|
@@ -415,7 +415,7 @@ export const VideoRecorder: React.FC<VideoRecorderProps> = ({
|
|
|
415
415
|
framesRef.current = [];
|
|
416
416
|
let consecutiveErrors = 0;
|
|
417
417
|
const maxConsecutiveErrors = 10;
|
|
418
|
-
const MAX_FRAMES =
|
|
418
|
+
const MAX_FRAMES = 150;
|
|
419
419
|
|
|
420
420
|
// Serial capture: each frame is captured only after the previous one
|
|
421
421
|
// finishes, preventing overlapping takePhoto() calls that cause the
|