idmission-web-sdk 2.1.52 → 2.1.54

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.
@@ -64,6 +64,11 @@ export type SubmissionState = {
64
64
  retryLocationAccess: () => void;
65
65
  };
66
66
  export declare const SubmissionContext: React.Context<SubmissionState>;
67
+ export type OnSubmit = (payload: SubmissionRequest) => void;
68
+ export type OnBeforeSubmit = (req: SubmissionRequest) => Promise<SubmissionRequest>;
69
+ export type OnBeforeLivenessCheck = (req: LivenessCheckRequest) => Promise<LivenessCheckRequest>;
70
+ export type OnResponseReceived = (res: SubmissionResponse, req: SubmissionRequest) => void;
71
+ export type OnRequestFailure = (err: Error) => void;
67
72
  export type SubmissionProviderProps = {
68
73
  action: SubmissionAction;
69
74
  children: ReactElement;
@@ -96,16 +101,16 @@ export type SubmissionProviderProps = {
96
101
  precapturedDocuments?: CapturedDocuments;
97
102
  documentServiceUrl?: string;
98
103
  sendBase64DocumentsInSwaggerProxy?: boolean;
99
- onSubmit?: (payload: SubmissionRequest) => void;
100
- onBeforeSubmit?: (req: SubmissionRequest) => Promise<SubmissionRequest>;
101
- onBeforeLivenessCheck?: (req: LivenessCheckRequest) => Promise<LivenessCheckRequest>;
104
+ onSubmit?: OnSubmit;
105
+ onBeforeSubmit?: OnBeforeSubmit;
106
+ onBeforeLivenessCheck?: OnBeforeLivenessCheck;
102
107
  onBeforeDocumentUpload?: OnBeforeDocumentUpload;
103
108
  onDocumentUploadProgress?: OnDocumentUploadProgress;
104
109
  onDocumentUploaded?: OnDocumentUploaded;
105
110
  onDocumentUploadFailed?: OnDocumentUploadFailed;
106
- onResponseReceived?: (res: SubmissionResponse, req: SubmissionRequest) => void;
107
- onRequestFailure?: (err: Error) => void;
111
+ onResponseReceived?: OnResponseReceived;
112
+ onRequestFailure?: OnRequestFailure;
108
113
  readTextPrompt?: string;
109
114
  clientRequestID?: string;
110
115
  };
111
- export declare const SubmissionProvider: ({ action, children, submissionUrl, environment, companyId, enrollmentId, personalData, cardData, idData, bypassAgeValidation, bypassNameMatching, needImmediateResponse, manualReviewRequired, idBackImageRequired, idImageResolutionCheck, verifyIdWithExternalDatabases, deduplicationEnabled, deduplicationSynchronous, idCardForFaceMatch, geolocationEnabled, geolocationRequired, webhooksEnabled, webhooksClientTraceId, webhooksStripSpecialCharacters, webhooksSendInputImages, webhooksSendProcessedImages, webhooksFireOnReview, customerDataMatchConfig, precapturedDocuments, documentServiceUrl, sendBase64DocumentsInSwaggerProxy, onSubmit, onBeforeSubmit, onBeforeLivenessCheck, onBeforeDocumentUpload, onDocumentUploadProgress, onDocumentUploaded, onDocumentUploadFailed, onResponseReceived, onRequestFailure, clientRequestID, }: SubmissionProviderProps) => ReactElement;
116
+ export declare const SubmissionProvider: ({ action, children, submissionUrl, environment, companyId, enrollmentId, personalData, cardData, idData, bypassAgeValidation, bypassNameMatching, needImmediateResponse, manualReviewRequired, idBackImageRequired, idImageResolutionCheck, verifyIdWithExternalDatabases, deduplicationEnabled, deduplicationSynchronous, idCardForFaceMatch, geolocationEnabled, geolocationRequired, webhooksEnabled, webhooksClientTraceId, webhooksStripSpecialCharacters, webhooksSendInputImages, webhooksSendProcessedImages, webhooksFireOnReview, customerDataMatchConfig, precapturedDocuments, documentServiceUrl, sendBase64DocumentsInSwaggerProxy, onSubmit: userSuppliedOnSubmit, onBeforeSubmit: userSuppliedOnBeforeSubmit, onBeforeLivenessCheck: userSuppliedOnBeforeLivenessCheck, onBeforeDocumentUpload: userSuppliedOnBeforeDocumentUpload, onDocumentUploadProgress: userSuppliedOnDocumentUploadProgress, onDocumentUploaded: userSuppliedOnDocumentUploaded, onDocumentUploadFailed: userSuppliedOnDocumentUploadFailed, onResponseReceived: userSuppliedOnResponseReceived, onRequestFailure: userSuppliedOnRequestFailure, clientRequestID, }: SubmissionProviderProps) => ReactElement;
@@ -234,7 +234,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
234
234
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
235
235
  };
236
236
 
237
- var webSdkVersion = '2.1.52';
237
+ var webSdkVersion = '2.1.54';
238
238
 
239
239
  function getPlatform() {
240
240
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -1168,15 +1168,15 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1168
1168
  documentServiceUrl = _v === void 0 ? defaultDocumentServiceUrl : _v,
1169
1169
  _w = _a.sendBase64DocumentsInSwaggerProxy,
1170
1170
  sendBase64DocumentsInSwaggerProxy = _w === void 0 ? false : _w,
1171
- onSubmit = _a.onSubmit,
1172
- onBeforeSubmit = _a.onBeforeSubmit,
1173
- onBeforeLivenessCheck = _a.onBeforeLivenessCheck,
1174
- onBeforeDocumentUpload = _a.onBeforeDocumentUpload,
1175
- onDocumentUploadProgress = _a.onDocumentUploadProgress,
1176
- onDocumentUploaded = _a.onDocumentUploaded,
1177
- onDocumentUploadFailed = _a.onDocumentUploadFailed,
1178
- onResponseReceived = _a.onResponseReceived,
1179
- onRequestFailure = _a.onRequestFailure,
1171
+ userSuppliedOnSubmit = _a.onSubmit,
1172
+ userSuppliedOnBeforeSubmit = _a.onBeforeSubmit,
1173
+ userSuppliedOnBeforeLivenessCheck = _a.onBeforeLivenessCheck,
1174
+ userSuppliedOnBeforeDocumentUpload = _a.onBeforeDocumentUpload,
1175
+ userSuppliedOnDocumentUploadProgress = _a.onDocumentUploadProgress,
1176
+ userSuppliedOnDocumentUploaded = _a.onDocumentUploaded,
1177
+ userSuppliedOnDocumentUploadFailed = _a.onDocumentUploadFailed,
1178
+ userSuppliedOnResponseReceived = _a.onResponseReceived,
1179
+ userSuppliedOnRequestFailure = _a.onRequestFailure,
1180
1180
  clientRequestID = _a.clientRequestID;
1181
1181
  var sessionId = useAuthContext()[0].sessionId;
1182
1182
  var _x = React.useState(SubmissionStatus.READY),
@@ -1274,20 +1274,57 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1274
1274
  setSelfieImage(dataUrlToBase64Sync(precapturedDocuments.selfie.imageData));
1275
1275
  }
1276
1276
  }, [precapturedDocuments === null || precapturedDocuments === void 0 ? void 0 : precapturedDocuments.selfie]);
1277
+ var onSubmit = React.useRef();
1278
+ React.useEffect(function () {
1279
+ onSubmit.current = userSuppliedOnSubmit;
1280
+ }, [userSuppliedOnSubmit]);
1281
+ var onBeforeSubmit = React.useRef();
1282
+ React.useEffect(function () {
1283
+ onBeforeSubmit.current = userSuppliedOnBeforeSubmit;
1284
+ }, [userSuppliedOnBeforeSubmit]);
1285
+ var onBeforeLivenessCheck = React.useRef();
1286
+ React.useEffect(function () {
1287
+ onBeforeLivenessCheck.current = userSuppliedOnBeforeLivenessCheck;
1288
+ }, [userSuppliedOnBeforeLivenessCheck]);
1289
+ var onResponseReceived = React.useRef();
1290
+ React.useEffect(function () {
1291
+ onResponseReceived.current = userSuppliedOnResponseReceived;
1292
+ }, [userSuppliedOnResponseReceived]);
1293
+ var onRequestFailure = React.useRef();
1294
+ React.useEffect(function () {
1295
+ onRequestFailure.current = userSuppliedOnRequestFailure;
1296
+ }, [userSuppliedOnRequestFailure]);
1297
+ var onBeforeDocumentUpload = React.useRef();
1298
+ React.useEffect(function () {
1299
+ onBeforeDocumentUpload.current = userSuppliedOnBeforeDocumentUpload;
1300
+ }, [userSuppliedOnBeforeDocumentUpload]);
1301
+ var onDocumentUploadProgress = React.useRef();
1302
+ React.useEffect(function () {
1303
+ onDocumentUploadProgress.current = userSuppliedOnDocumentUploadProgress;
1304
+ }, [userSuppliedOnDocumentUploadProgress]);
1305
+ var onDocumentUploaded = React.useRef();
1306
+ React.useEffect(function () {
1307
+ onDocumentUploaded.current = userSuppliedOnDocumentUploaded;
1308
+ }, [userSuppliedOnDocumentUploaded]);
1309
+ var onDocumentUploadFailed = React.useRef();
1310
+ React.useEffect(function () {
1311
+ onDocumentUploadFailed.current = userSuppliedOnDocumentUploadFailed;
1312
+ }, [userSuppliedOnDocumentUploadFailed]);
1277
1313
  var uploadDocument = React.useCallback(function (src, metadata) {
1278
1314
  return new Promise(function (resolve, reject) {
1279
1315
  return __awaiter(void 0, void 0, void 0, function () {
1280
1316
  var blob, _a, upload;
1281
- return __generator(this, function (_b) {
1282
- switch (_b.label) {
1317
+ var _b;
1318
+ return __generator(this, function (_c) {
1319
+ switch (_c.label) {
1283
1320
  case 0:
1284
1321
  blob = typeof src === 'string' ? convertBase64ToBlob(src) : src;
1285
- _a = onBeforeDocumentUpload;
1322
+ _a = onBeforeDocumentUpload.current;
1286
1323
  if (!_a) return [3 /*break*/, 2];
1287
- return [4 /*yield*/, onBeforeDocumentUpload === null || onBeforeDocumentUpload === void 0 ? void 0 : onBeforeDocumentUpload(blob, metadata)];
1324
+ return [4 /*yield*/, (_b = onBeforeDocumentUpload.current) === null || _b === void 0 ? void 0 : _b.call(onBeforeDocumentUpload, blob, metadata)];
1288
1325
  case 1:
1289
- _a = _b.sent() === false;
1290
- _b.label = 2;
1326
+ _a = _c.sent() === false;
1327
+ _c.label = 2;
1291
1328
  case 2:
1292
1329
  if (_a) return [2 /*return*/, resolve(blobToB64(blob))];
1293
1330
  upload = createUpload(blob, {
@@ -1300,7 +1337,8 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1300
1337
  filetype: blob.type
1301
1338
  },
1302
1339
  onProgress: function onProgress(bytesUploaded, bytesTotal) {
1303
- onDocumentUploadProgress === null || onDocumentUploadProgress === void 0 ? void 0 : onDocumentUploadProgress({
1340
+ var _a;
1341
+ (_a = onDocumentUploadProgress.current) === null || _a === void 0 ? void 0 : _a.call(onDocumentUploadProgress, {
1304
1342
  bytesUploaded: bytesUploaded,
1305
1343
  bytesTotal: bytesTotal,
1306
1344
  percentage: (bytesUploaded / bytesTotal * 100).toFixed(2) + '%',
@@ -1308,14 +1346,15 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1308
1346
  });
1309
1347
  },
1310
1348
  onSuccess: function onSuccess() {
1311
- var _a;
1349
+ var _a, _b;
1312
1350
  var documentId = 'urn:documentsv1:' + ((_a = upload.url.split('/files/').pop()) === null || _a === void 0 ? void 0 : _a.split('+').shift());
1313
- onDocumentUploaded === null || onDocumentUploaded === void 0 ? void 0 : onDocumentUploaded(documentId, metadata);
1351
+ (_b = onDocumentUploaded.current) === null || _b === void 0 ? void 0 : _b.call(onDocumentUploaded, documentId, metadata);
1314
1352
  resolve(documentId);
1315
1353
  },
1316
1354
  onError: function onError(error) {
1355
+ var _a;
1317
1356
  log('Failed because: ' + error);
1318
- onDocumentUploadFailed === null || onDocumentUploadFailed === void 0 ? void 0 : onDocumentUploadFailed(error, metadata);
1357
+ (_a = onDocumentUploadFailed.current) === null || _a === void 0 ? void 0 : _a.call(onDocumentUploadFailed, error, metadata);
1319
1358
  reject(error);
1320
1359
  }
1321
1360
  });
@@ -1333,7 +1372,7 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1333
1372
  });
1334
1373
  });
1335
1374
  });
1336
- }, [onBeforeDocumentUpload, documentServiceUrl, sessionId, onDocumentUploadProgress, onDocumentUploaded, onDocumentUploadFailed]);
1375
+ }, [documentServiceUrl, sessionId]);
1337
1376
  var buildSubmissionPayload = React.useCallback(function () {
1338
1377
  return __awaiter(void 0, void 0, void 0, function () {
1339
1378
  function uploadIfPossible(src_1, filename_1) {
@@ -1529,8 +1568,8 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1529
1568
  idBackCaptureAttempts: idBackCaptureAttempts,
1530
1569
  geolocationResult: geolocationResult
1531
1570
  });
1532
- if (!onBeforeSubmit) return [3 /*break*/, 10];
1533
- return [4 /*yield*/, onBeforeSubmit(submissionRequest)];
1571
+ if (!onBeforeSubmit.current) return [3 /*break*/, 10];
1572
+ return [4 /*yield*/, onBeforeSubmit.current(submissionRequest)];
1534
1573
  case 9:
1535
1574
  onBeforeSubmitResult = _h.sent();
1536
1575
  if (onBeforeSubmitResult) submissionRequest = onBeforeSubmitResult;
@@ -1540,13 +1579,13 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1540
1579
  }
1541
1580
  });
1542
1581
  });
1543
- }, [additionalDocuments, bypassAgeValidation, bypassNameMatching, cardData, clientRequestID, companyId, customerDataMatchConfig, deduplicationEnabled, deduplicationSynchronous, documentServiceUrl, enrollmentId, expectedAudioText, geolocationResult, idBackCaptureAttempts, idBackImage, idBackImageRequired, idCaptureVideoAudioStartsAt, idCaptureVideoAudioUrl, idCaptureVideoIdBackImage, idCaptureVideoIdFrontImage, idCaptureVideoUrl, idData, idFrontCaptureAttempts, idFrontImage, idImageResolutionCheck, manualReviewRequired, needImmediateResponse, onBeforeSubmit, passportImage, personalData, selfieCaptureAttempts, selfieImage, signatureData, signatureVideoUrl, uploadDocument, verifyIdWithExternalDatabases, webhooksClientTraceId, webhooksEnabled, webhooksFireOnReview, webhooksSendInputImages, webhooksSendProcessedImages, webhooksStripSpecialCharacters]);
1582
+ }, [additionalDocuments, bypassAgeValidation, bypassNameMatching, cardData, clientRequestID, companyId, customerDataMatchConfig, deduplicationEnabled, deduplicationSynchronous, documentServiceUrl, enrollmentId, expectedAudioText, geolocationResult, idBackCaptureAttempts, idBackImage, idBackImageRequired, idCaptureVideoAudioStartsAt, idCaptureVideoAudioUrl, idCaptureVideoIdBackImage, idCaptureVideoIdFrontImage, idCaptureVideoUrl, idData, idFrontCaptureAttempts, idFrontImage, idImageResolutionCheck, manualReviewRequired, needImmediateResponse, passportImage, personalData, selfieCaptureAttempts, selfieImage, signatureData, signatureVideoUrl, uploadDocument, verifyIdWithExternalDatabases, webhooksClientTraceId, webhooksEnabled, webhooksFireOnReview, webhooksSendInputImages, webhooksSendProcessedImages, webhooksStripSpecialCharacters]);
1544
1583
  var defaultOnSubmit = React.useCallback(function () {
1545
1584
  return __awaiter(void 0, void 0, void 0, function () {
1546
1585
  var submissionResponse_1, payload, host, endpoint, response, statusMessage, submissionResponse_2, e_1, err;
1547
- var _a;
1548
- return __generator(this, function (_b) {
1549
- switch (_b.label) {
1586
+ var _a, _b, _c;
1587
+ return __generator(this, function (_d) {
1588
+ switch (_d.label) {
1550
1589
  case 0:
1551
1590
  if (action === SubmissionAction.NONE) {
1552
1591
  submissionResponse_1 = {
@@ -1560,12 +1599,12 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1560
1599
  return [2 /*return*/, submissionResponse_1];
1561
1600
  }
1562
1601
  setSubmissionStatus(SubmissionStatus.SUBMITTING);
1563
- _b.label = 1;
1602
+ _d.label = 1;
1564
1603
  case 1:
1565
- _b.trys.push([1, 7,, 8]);
1604
+ _d.trys.push([1, 7,, 8]);
1566
1605
  return [4 /*yield*/, buildSubmissionPayload()];
1567
1606
  case 2:
1568
- payload = _b.sent();
1607
+ payload = _d.sent();
1569
1608
  host = submissionUrl || determineSubmissionHost(environment);
1570
1609
  endpoint = determineSubmissionEndpoint(action, !!(idFrontImage || idBackImage || passportImage), !!selfieImage);
1571
1610
  return [4 /*yield*/, fetch(host + endpoint, {
@@ -1576,11 +1615,11 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1576
1615
  throw new NetworkError(e.message);
1577
1616
  })];
1578
1617
  case 3:
1579
- response = _b.sent();
1618
+ response = _d.sent();
1580
1619
  if (!(!response || !response.ok)) return [3 /*break*/, 5];
1581
1620
  return [4 /*yield*/, response === null || response === void 0 ? void 0 : response.text()];
1582
1621
  case 4:
1583
- statusMessage = _b.sent();
1622
+ statusMessage = _d.sent();
1584
1623
  if (!statusMessage || statusMessage === 'Load failed') throw new NetworkError(statusMessage);
1585
1624
  throw new SubmissionError({
1586
1625
  statusCode: (_a = response === null || response === void 0 ? void 0 : response.statusText) !== null && _a !== void 0 ? _a : '???',
@@ -1589,17 +1628,17 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1589
1628
  case 5:
1590
1629
  return [4 /*yield*/, response.json()];
1591
1630
  case 6:
1592
- submissionResponse_2 = _b.sent();
1631
+ submissionResponse_2 = _d.sent();
1593
1632
  if (submissionResponse_2.status.statusCode !== '000') {
1594
1633
  throw new SubmissionError(submissionResponse_2.status);
1595
1634
  }
1596
1635
  setSubmissionRequest(payload);
1597
1636
  setSubmissionResponse(submissionResponse_2);
1598
1637
  setSubmissionStatus(SubmissionStatus.SUBMITTED);
1599
- onResponseReceived === null || onResponseReceived === void 0 ? void 0 : onResponseReceived(submissionResponse_2, payload);
1638
+ (_b = onResponseReceived.current) === null || _b === void 0 ? void 0 : _b.call(onResponseReceived, submissionResponse_2, payload);
1600
1639
  return [2 /*return*/, submissionResponse_2];
1601
1640
  case 7:
1602
- e_1 = _b.sent();
1641
+ e_1 = _d.sent();
1603
1642
  err = e_1;
1604
1643
  setSubmissionStatus(SubmissionStatus.FAILED);
1605
1644
  setSubmissionError(e_1 instanceof SubmissionError || e_1 instanceof NetworkError ? e_1 : err.message === 'Load failed' ? new NetworkError() : new SubmissionError({
@@ -1611,41 +1650,40 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1611
1650
  return null;
1612
1651
  } : defaultOnSubmit;
1613
1652
  });
1614
- onRequestFailure === null || onRequestFailure === void 0 ? void 0 : onRequestFailure(err);
1653
+ (_c = onRequestFailure.current) === null || _c === void 0 ? void 0 : _c.call(onRequestFailure, err);
1615
1654
  throw err;
1616
1655
  case 8:
1617
1656
  return [2 /*return*/];
1618
1657
  }
1619
1658
  });
1620
1659
  });
1621
- }, [action, buildSubmissionPayload, submissionUrl, environment, idFrontImage, idBackImage, passportImage, selfieImage, sessionId, sendBase64DocumentsInSwaggerProxy, onResponseReceived, onRequestFailure]);
1660
+ }, [action, buildSubmissionPayload, submissionUrl, environment, idFrontImage, idBackImage, passportImage, selfieImage, sessionId, sendBase64DocumentsInSwaggerProxy]);
1622
1661
  var submit = React.useCallback(function () {
1623
1662
  return __awaiter(void 0, void 0, void 0, function () {
1624
- var _a;
1625
- return __generator(this, function (_b) {
1626
- switch (_b.label) {
1663
+ var _a, _b;
1664
+ return __generator(this, function (_c) {
1665
+ switch (_c.label) {
1627
1666
  case 0:
1628
- if (!onSubmit) return [3 /*break*/, 2];
1629
- _a = onSubmit;
1667
+ if (!onSubmit.current) return [3 /*break*/, 2];
1668
+ _b = (_a = onSubmit).current;
1630
1669
  return [4 /*yield*/, buildSubmissionPayload()];
1631
1670
  case 1:
1632
- return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
1671
+ return [2 /*return*/, _b.apply(_a, [_c.sent()])];
1633
1672
  case 2:
1634
1673
  return [4 /*yield*/, defaultOnSubmit()];
1635
1674
  case 3:
1636
- return [2 /*return*/, _b.sent()];
1675
+ return [2 /*return*/, _c.sent()];
1637
1676
  }
1638
1677
  });
1639
1678
  });
1640
- }, [buildSubmissionPayload, defaultOnSubmit, onSubmit]);
1641
- var checkLiveness = React.useCallback(function (imageDataUrl) {
1679
+ }, [buildSubmissionPayload, defaultOnSubmit]);
1680
+ var buildLivenessCheckPayload = React.useCallback(function (imageDataUrl) {
1642
1681
  return __awaiter(void 0, void 0, void 0, function () {
1643
- var request, onBeforeLivenessCheckResult, host, endpoint, response, statusMessage, submissionResponse_3, e_2, err;
1682
+ var request, onBeforeLivenessCheckResult;
1644
1683
  var _a, _b, _c;
1645
1684
  return __generator(this, function (_d) {
1646
1685
  switch (_d.label) {
1647
1686
  case 0:
1648
- _d.trys.push([0, 8,, 9]);
1649
1687
  _a = {
1650
1688
  securityData: {
1651
1689
  userName: '',
@@ -1681,14 +1719,30 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1681
1719
  idBackCaptureAttempts: idBackCaptureAttempts,
1682
1720
  geolocationResult: geolocationResult
1683
1721
  });
1684
- setLivenessCheckRequest(request);
1685
- if (!onBeforeLivenessCheck) return [3 /*break*/, 3];
1686
- return [4 /*yield*/, onBeforeLivenessCheck(request)];
1722
+ if (!onBeforeLivenessCheck.current) return [3 /*break*/, 3];
1723
+ return [4 /*yield*/, onBeforeLivenessCheck.current(request)];
1687
1724
  case 2:
1688
1725
  onBeforeLivenessCheckResult = _d.sent();
1689
1726
  if (onBeforeLivenessCheckResult) request = onBeforeLivenessCheckResult;
1690
1727
  _d.label = 3;
1691
1728
  case 3:
1729
+ setLivenessCheckRequest(request);
1730
+ return [2 /*return*/, request];
1731
+ }
1732
+ });
1733
+ });
1734
+ }, [clientRequestID, geolocationResult, idBackCaptureAttempts, idCardForFaceMatch, idFrontCaptureAttempts, selfieCaptureAttempts, webhooksStripSpecialCharacters]);
1735
+ var checkLiveness = React.useCallback(function (imageDataUrl) {
1736
+ return __awaiter(void 0, void 0, void 0, function () {
1737
+ var request, host, endpoint, response, statusMessage, submissionResponse_3, e_2, err;
1738
+ var _a;
1739
+ return __generator(this, function (_b) {
1740
+ switch (_b.label) {
1741
+ case 0:
1742
+ _b.trys.push([0, 6,, 7]);
1743
+ return [4 /*yield*/, buildLivenessCheckPayload(imageDataUrl)];
1744
+ case 1:
1745
+ request = _b.sent();
1692
1746
  host = submissionUrl || determineSubmissionHost(environment);
1693
1747
  endpoint = liveCheckEndpoint(!!idCardForFaceMatch);
1694
1748
  return [4 /*yield*/, fetch(host + endpoint, {
@@ -1698,28 +1752,28 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1698
1752
  })["catch"](function (e) {
1699
1753
  throw new NetworkError(e.message);
1700
1754
  })];
1701
- case 4:
1702
- response = _d.sent();
1703
- if (!!response.ok) return [3 /*break*/, 6];
1755
+ case 2:
1756
+ response = _b.sent();
1757
+ if (!!response.ok) return [3 /*break*/, 4];
1704
1758
  return [4 /*yield*/, response.text()];
1705
- case 5:
1706
- statusMessage = _d.sent();
1759
+ case 3:
1760
+ statusMessage = _b.sent();
1707
1761
  if (!statusMessage || statusMessage === 'Load failed') throw new NetworkError(statusMessage);
1708
1762
  throw new SubmissionError({
1709
1763
  statusCode: response.statusText,
1710
1764
  statusMessage: statusMessage
1711
1765
  });
1712
- case 6:
1766
+ case 4:
1713
1767
  return [4 /*yield*/, response.json()];
1714
- case 7:
1715
- submissionResponse_3 = _d.sent();
1768
+ case 5:
1769
+ submissionResponse_3 = _b.sent();
1716
1770
  if (submissionResponse_3.status.statusCode !== '000') {
1717
1771
  throw new SubmissionError(submissionResponse_3.status);
1718
1772
  }
1719
1773
  setSubmissionResponse(submissionResponse_3);
1720
1774
  return [2 /*return*/, submissionResponse_3];
1721
- case 8:
1722
- e_2 = _d.sent();
1775
+ case 6:
1776
+ e_2 = _b.sent();
1723
1777
  err = e_2;
1724
1778
  setSubmissionStatus(SubmissionStatus.FAILED);
1725
1779
  setSubmissionError(e_2 instanceof SubmissionError || e_2 instanceof NetworkError ? e_2 : err.message === 'Load failed' ? new NetworkError() : new SubmissionError({
@@ -1732,14 +1786,14 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1732
1786
  return null;
1733
1787
  };
1734
1788
  });
1735
- onRequestFailure === null || onRequestFailure === void 0 ? void 0 : onRequestFailure(err);
1789
+ (_a = onRequestFailure.current) === null || _a === void 0 ? void 0 : _a.call(onRequestFailure, err);
1736
1790
  throw err;
1737
- case 9:
1791
+ case 7:
1738
1792
  return [2 /*return*/];
1739
1793
  }
1740
1794
  });
1741
1795
  });
1742
- }, [webhooksStripSpecialCharacters, clientRequestID, idCardForFaceMatch, selfieCaptureAttempts, idFrontCaptureAttempts, idBackCaptureAttempts, geolocationResult, onBeforeLivenessCheck, submissionUrl, environment, sessionId, sendBase64DocumentsInSwaggerProxy, onRequestFailure]);
1796
+ }, [buildLivenessCheckPayload, submissionUrl, environment, idCardForFaceMatch, sessionId, sendBase64DocumentsInSwaggerProxy]);
1743
1797
  var retryLocationAccess = React.useCallback(function () {
1744
1798
  setGeolocationAttempts(function (n) {
1745
1799
  return n + 1;