astra-sdk-web 1.1.10 → 1.1.12
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 +44 -13
- package/dist/astra-sdk.cjs.js.map +1 -1
- package/dist/astra-sdk.es.js +44 -13
- package/dist/astra-sdk.es.js.map +1 -1
- package/dist/components.cjs.js +44 -13
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +44 -13
- 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/DocumentUploadModal.tsx +2 -3
- package/src/pages/FaceScanModal.tsx +12 -5
- package/src/services/kycApiService.ts +9 -1
package/dist/astra-sdk.cjs.js
CHANGED
|
@@ -294,15 +294,21 @@ var KycApiService = class {
|
|
|
294
294
|
);
|
|
295
295
|
if (!response.ok) {
|
|
296
296
|
const errorData = await response.json().catch(() => ({}));
|
|
297
|
-
const message = errorData?.message || `Face upload failed with status ${response.status}`;
|
|
297
|
+
const message = errorData?.message || errorData?.errorData?.message || `Face upload failed with status ${response.status}`;
|
|
298
298
|
const error = new Error(message);
|
|
299
299
|
error.statusCode = response.status;
|
|
300
300
|
error.errorData = errorData;
|
|
301
|
+
if (errorData.statusCode) {
|
|
302
|
+
error.statusCode = errorData.statusCode;
|
|
303
|
+
}
|
|
301
304
|
throw error;
|
|
302
305
|
}
|
|
303
306
|
const data = await response.json();
|
|
304
307
|
return data;
|
|
305
308
|
} catch (error) {
|
|
309
|
+
if (error.message && !error.message.includes("Face upload failed")) {
|
|
310
|
+
throw error;
|
|
311
|
+
}
|
|
306
312
|
const message = error?.message || "Face upload failed";
|
|
307
313
|
throw new Error(`Face upload failed: ${message}`);
|
|
308
314
|
}
|
|
@@ -664,8 +670,8 @@ function DocumentUploadModal({ onComplete }) {
|
|
|
664
670
|
await apiService.uploadDocument(blob, docType);
|
|
665
671
|
try {
|
|
666
672
|
const statusResponse = await apiService.getSessionStatus();
|
|
667
|
-
const { completed_steps,
|
|
668
|
-
if (
|
|
673
|
+
const { completed_steps, next_step } = statusResponse.data;
|
|
674
|
+
if (next_step === "completed" || completed_steps.includes(COMPLETED_STEPS.COMPLETED)) {
|
|
669
675
|
setKycCompleted(true);
|
|
670
676
|
}
|
|
671
677
|
} catch (error) {
|
|
@@ -1374,8 +1380,29 @@ function useFaceScan(videoRef, canvasRef, callbacks) {
|
|
|
1374
1380
|
livenessInstruction: "Face captured and uploaded successfully!",
|
|
1375
1381
|
loading: false
|
|
1376
1382
|
}));
|
|
1383
|
+
if (callbacks?.onFaceCaptureComplete) {
|
|
1384
|
+
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1385
|
+
}
|
|
1386
|
+
setTimeout(() => {
|
|
1387
|
+
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1388
|
+
}, 500);
|
|
1377
1389
|
} catch (uploadError) {
|
|
1378
|
-
|
|
1390
|
+
if (uploadError.message === "FACE_ALREADY_REGISTERED" || uploadError.isFaceAlreadyRegistered) {
|
|
1391
|
+
setState((prev) => ({
|
|
1392
|
+
...prev,
|
|
1393
|
+
loading: false,
|
|
1394
|
+
allStepsCompleted: false,
|
|
1395
|
+
showDocumentUpload: false,
|
|
1396
|
+
livenessInstruction: "Face already registered. Please click Retry to register again."
|
|
1397
|
+
}));
|
|
1398
|
+
return;
|
|
1399
|
+
}
|
|
1400
|
+
setState((prev) => ({
|
|
1401
|
+
...prev,
|
|
1402
|
+
livenessInstruction: uploadError.message || "Error capturing image. Please try again.",
|
|
1403
|
+
loading: false
|
|
1404
|
+
}));
|
|
1405
|
+
throw uploadError;
|
|
1379
1406
|
}
|
|
1380
1407
|
} else {
|
|
1381
1408
|
setState((prev) => ({
|
|
@@ -1385,13 +1412,13 @@ function useFaceScan(videoRef, canvasRef, callbacks) {
|
|
|
1385
1412
|
livenessInstruction: "Face captured successfully!",
|
|
1386
1413
|
loading: false
|
|
1387
1414
|
}));
|
|
1415
|
+
if (callbacks?.onFaceCaptureComplete) {
|
|
1416
|
+
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1417
|
+
}
|
|
1418
|
+
setTimeout(() => {
|
|
1419
|
+
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1420
|
+
}, 500);
|
|
1388
1421
|
}
|
|
1389
|
-
if (callbacks?.onFaceCaptureComplete) {
|
|
1390
|
-
callbacks.onFaceCaptureComplete(dataUrl);
|
|
1391
|
-
}
|
|
1392
|
-
setTimeout(() => {
|
|
1393
|
-
setState((prev) => ({ ...prev, showDocumentUpload: true }));
|
|
1394
|
-
}, 500);
|
|
1395
1422
|
} catch (err) {
|
|
1396
1423
|
console.error("Error capturing image:", err);
|
|
1397
1424
|
setState((prev) => ({
|
|
@@ -1574,14 +1601,18 @@ function FaceScanModal({ onComplete }) {
|
|
|
1574
1601
|
} catch (error) {
|
|
1575
1602
|
const errorMessage = error?.message || "";
|
|
1576
1603
|
const errorData = error?.errorData || {};
|
|
1577
|
-
|
|
1604
|
+
const statusCode = error?.statusCode;
|
|
1605
|
+
const isFaceAlreadyRegistered = errorMessage.includes("Face already registered") || errorMessage.includes("already registered") || errorData?.message?.includes("Face already registered") || statusCode === 500 && errorMessage.includes("Face already registered");
|
|
1606
|
+
if (isFaceAlreadyRegistered) {
|
|
1578
1607
|
setShowRetryButton(true);
|
|
1579
1608
|
setToast({
|
|
1580
1609
|
message: "Face already registered. Click Retry to register again.",
|
|
1581
1610
|
type: "warning"
|
|
1582
1611
|
});
|
|
1583
|
-
setState((prev) => ({ ...prev, loading: false }));
|
|
1584
|
-
|
|
1612
|
+
setState((prev) => ({ ...prev, loading: false, allStepsCompleted: false, showDocumentUpload: false }));
|
|
1613
|
+
const faceRegisteredError = new Error("FACE_ALREADY_REGISTERED");
|
|
1614
|
+
faceRegisteredError.isFaceAlreadyRegistered = true;
|
|
1615
|
+
throw faceRegisteredError;
|
|
1585
1616
|
}
|
|
1586
1617
|
throw error;
|
|
1587
1618
|
}
|