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/astra-sdk.es.js
CHANGED
|
@@ -286,15 +286,21 @@ var KycApiService = class {
|
|
|
286
286
|
);
|
|
287
287
|
if (!response.ok) {
|
|
288
288
|
const errorData = await response.json().catch(() => ({}));
|
|
289
|
-
const message = errorData?.message || `Face upload failed with status ${response.status}`;
|
|
289
|
+
const message = errorData?.message || errorData?.errorData?.message || `Face upload failed with status ${response.status}`;
|
|
290
290
|
const error = new Error(message);
|
|
291
291
|
error.statusCode = response.status;
|
|
292
292
|
error.errorData = errorData;
|
|
293
|
+
if (errorData.statusCode) {
|
|
294
|
+
error.statusCode = errorData.statusCode;
|
|
295
|
+
}
|
|
293
296
|
throw error;
|
|
294
297
|
}
|
|
295
298
|
const data = await response.json();
|
|
296
299
|
return data;
|
|
297
300
|
} catch (error) {
|
|
301
|
+
if (error.message && !error.message.includes("Face upload failed")) {
|
|
302
|
+
throw error;
|
|
303
|
+
}
|
|
298
304
|
const message = error?.message || "Face upload failed";
|
|
299
305
|
throw new Error(`Face upload failed: ${message}`);
|
|
300
306
|
}
|
|
@@ -1366,8 +1372,29 @@ function useFaceScan(videoRef, canvasRef, callbacks) {
|
|
|
1366
1372
|
livenessInstruction: "Face captured and uploaded successfully!",
|
|
1367
1373
|
loading: false
|
|
1368
1374
|
}));
|
|
1375
|
+
if (callbacks?.onFaceCaptureComplete) {
|
|
1376
|
+
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1377
|
+
}
|
|
1378
|
+
setTimeout(() => {
|
|
1379
|
+
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1380
|
+
}, 500);
|
|
1369
1381
|
} catch (uploadError) {
|
|
1370
|
-
|
|
1382
|
+
if (uploadError.message === "FACE_ALREADY_REGISTERED" || uploadError.isFaceAlreadyRegistered) {
|
|
1383
|
+
setState((prev) => ({
|
|
1384
|
+
...prev,
|
|
1385
|
+
loading: false,
|
|
1386
|
+
allStepsCompleted: false,
|
|
1387
|
+
showDocumentUpload: false,
|
|
1388
|
+
livenessInstruction: "Face already registered. Please click Retry to register again."
|
|
1389
|
+
}));
|
|
1390
|
+
return;
|
|
1391
|
+
}
|
|
1392
|
+
setState((prev) => ({
|
|
1393
|
+
...prev,
|
|
1394
|
+
livenessInstruction: uploadError.message || "Error capturing image. Please try again.",
|
|
1395
|
+
loading: false
|
|
1396
|
+
}));
|
|
1397
|
+
throw uploadError;
|
|
1371
1398
|
}
|
|
1372
1399
|
} else {
|
|
1373
1400
|
setState((prev) => ({
|
|
@@ -1377,13 +1404,13 @@ function useFaceScan(videoRef, canvasRef, callbacks) {
|
|
|
1377
1404
|
livenessInstruction: "Face captured successfully!",
|
|
1378
1405
|
loading: false
|
|
1379
1406
|
}));
|
|
1407
|
+
if (callbacks?.onFaceCaptureComplete) {
|
|
1408
|
+
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1409
|
+
}
|
|
1410
|
+
setTimeout(() => {
|
|
1411
|
+
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1412
|
+
}, 500);
|
|
1380
1413
|
}
|
|
1381
|
-
if (callbacks?.onFaceCaptureComplete) {
|
|
1382
|
-
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1383
|
-
}
|
|
1384
|
-
setTimeout(() => {
|
|
1385
|
-
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1386
|
-
}, 500);
|
|
1387
1414
|
} catch (err) {
|
|
1388
1415
|
console.error("Error capturing image:", err);
|
|
1389
1416
|
setState((prev) => ({
|
|
@@ -1566,14 +1593,18 @@ function FaceScanModal({ onComplete }) {
|
|
|
1566
1593
|
} catch (error) {
|
|
1567
1594
|
const errorMessage = error?.message || "";
|
|
1568
1595
|
const errorData = error?.errorData || {};
|
|
1569
|
-
|
|
1596
|
+
const statusCode = error?.statusCode;
|
|
1597
|
+
const isFaceAlreadyRegistered = errorMessage.includes("Face already registered") || errorMessage.includes("already registered") || errorData?.message?.includes("Face already registered") || statusCode === 500 && errorMessage.includes("Face already registered");
|
|
1598
|
+
if (isFaceAlreadyRegistered) {
|
|
1570
1599
|
setShowRetryButton(true);
|
|
1571
1600
|
setToast({
|
|
1572
1601
|
message: "Face already registered. Click Retry to register again.",
|
|
1573
1602
|
type: "warning"
|
|
1574
1603
|
});
|
|
1575
|
-
setState((prev) => ({ ...prev, loading: false }));
|
|
1576
|
-
|
|
1604
|
+
setState((prev) => ({ ...prev, loading: false, allStepsCompleted: false, showDocumentUpload: false }));
|
|
1605
|
+
const faceRegisteredError = new Error("FACE_ALREADY_REGISTERED");
|
|
1606
|
+
faceRegisteredError.isFaceAlreadyRegistered = true;
|
|
1607
|
+
throw faceRegisteredError;
|
|
1577
1608
|
}
|
|
1578
1609
|
throw error;
|
|
1579
1610
|
}
|