astra-sdk-web 1.1.10 → 1.1.11
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/astra-sdk.cjs.js +42 -11
- package/dist/astra-sdk.cjs.js.map +1 -1
- package/dist/astra-sdk.es.js +42 -11
- package/dist/astra-sdk.es.js.map +1 -1
- package/dist/components.cjs.js +42 -11
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +42 -11
- package/dist/components.es.js.map +1 -1
- package/package.json +1 -1
- package/src/features/faceScan/hooks/useFaceScan.ts +37 -10
- package/src/pages/FaceScanModal.tsx +12 -5
- package/src/services/kycApiService.ts +9 -1
package/dist/components.es.js
CHANGED
|
@@ -83,15 +83,21 @@ var KycApiService = class {
|
|
|
83
83
|
);
|
|
84
84
|
if (!response.ok) {
|
|
85
85
|
const errorData = await response.json().catch(() => ({}));
|
|
86
|
-
const message = errorData?.message || `Face upload failed with status ${response.status}`;
|
|
86
|
+
const message = errorData?.message || errorData?.errorData?.message || `Face upload failed with status ${response.status}`;
|
|
87
87
|
const error = new Error(message);
|
|
88
88
|
error.statusCode = response.status;
|
|
89
89
|
error.errorData = errorData;
|
|
90
|
+
if (errorData.statusCode) {
|
|
91
|
+
error.statusCode = errorData.statusCode;
|
|
92
|
+
}
|
|
90
93
|
throw error;
|
|
91
94
|
}
|
|
92
95
|
const data = await response.json();
|
|
93
96
|
return data;
|
|
94
97
|
} catch (error) {
|
|
98
|
+
if (error.message && !error.message.includes("Face upload failed")) {
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
95
101
|
const message = error?.message || "Face upload failed";
|
|
96
102
|
throw new Error(`Face upload failed: ${message}`);
|
|
97
103
|
}
|
|
@@ -1163,8 +1169,29 @@ function useFaceScan(videoRef, canvasRef, callbacks) {
|
|
|
1163
1169
|
livenessInstruction: "Face captured and uploaded successfully!",
|
|
1164
1170
|
loading: false
|
|
1165
1171
|
}));
|
|
1172
|
+
if (callbacks?.onFaceCaptureComplete) {
|
|
1173
|
+
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1174
|
+
}
|
|
1175
|
+
setTimeout(() => {
|
|
1176
|
+
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1177
|
+
}, 500);
|
|
1166
1178
|
} catch (uploadError) {
|
|
1167
|
-
|
|
1179
|
+
if (uploadError.message === "FACE_ALREADY_REGISTERED" || uploadError.isFaceAlreadyRegistered) {
|
|
1180
|
+
setState((prev) => ({
|
|
1181
|
+
...prev,
|
|
1182
|
+
loading: false,
|
|
1183
|
+
allStepsCompleted: false,
|
|
1184
|
+
showDocumentUpload: false,
|
|
1185
|
+
livenessInstruction: "Face already registered. Please click Retry to register again."
|
|
1186
|
+
}));
|
|
1187
|
+
return;
|
|
1188
|
+
}
|
|
1189
|
+
setState((prev) => ({
|
|
1190
|
+
...prev,
|
|
1191
|
+
livenessInstruction: uploadError.message || "Error capturing image. Please try again.",
|
|
1192
|
+
loading: false
|
|
1193
|
+
}));
|
|
1194
|
+
throw uploadError;
|
|
1168
1195
|
}
|
|
1169
1196
|
} else {
|
|
1170
1197
|
setState((prev) => ({
|
|
@@ -1174,13 +1201,13 @@ function useFaceScan(videoRef, canvasRef, callbacks) {
|
|
|
1174
1201
|
livenessInstruction: "Face captured successfully!",
|
|
1175
1202
|
loading: false
|
|
1176
1203
|
}));
|
|
1204
|
+
if (callbacks?.onFaceCaptureComplete) {
|
|
1205
|
+
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1206
|
+
}
|
|
1207
|
+
setTimeout(() => {
|
|
1208
|
+
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1209
|
+
}, 500);
|
|
1177
1210
|
}
|
|
1178
|
-
if (callbacks?.onFaceCaptureComplete) {
|
|
1179
|
-
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1180
|
-
}
|
|
1181
|
-
setTimeout(() => {
|
|
1182
|
-
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1183
|
-
}, 500);
|
|
1184
1211
|
} catch (err) {
|
|
1185
1212
|
console.error("Error capturing image:", err);
|
|
1186
1213
|
setState((prev) => ({
|
|
@@ -1363,14 +1390,18 @@ function FaceScanModal({ onComplete }) {
|
|
|
1363
1390
|
} catch (error) {
|
|
1364
1391
|
const errorMessage = error?.message || "";
|
|
1365
1392
|
const errorData = error?.errorData || {};
|
|
1366
|
-
|
|
1393
|
+
const statusCode = error?.statusCode;
|
|
1394
|
+
const isFaceAlreadyRegistered = errorMessage.includes("Face already registered") || errorMessage.includes("already registered") || errorData?.message?.includes("Face already registered") || statusCode === 500 && errorMessage.includes("Face already registered");
|
|
1395
|
+
if (isFaceAlreadyRegistered) {
|
|
1367
1396
|
setShowRetryButton(true);
|
|
1368
1397
|
setToast({
|
|
1369
1398
|
message: "Face already registered. Click Retry to register again.",
|
|
1370
1399
|
type: "warning"
|
|
1371
1400
|
});
|
|
1372
|
-
setState((prev) => ({ ...prev, loading: false }));
|
|
1373
|
-
|
|
1401
|
+
setState((prev) => ({ ...prev, loading: false, allStepsCompleted: false, showDocumentUpload: false }));
|
|
1402
|
+
const faceRegisteredError = new Error("FACE_ALREADY_REGISTERED");
|
|
1403
|
+
faceRegisteredError.isFaceAlreadyRegistered = true;
|
|
1404
|
+
throw faceRegisteredError;
|
|
1374
1405
|
}
|
|
1375
1406
|
throw error;
|
|
1376
1407
|
}
|