@bytexbyte/berifyme-react-sdk 1.0.0 → 1.0.1

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.
Files changed (35) hide show
  1. package/dist/BerifymeModal/index.js +54 -38
  2. package/dist/api/api.js +40 -4
  3. package/dist/components/AllSet/index.js +36 -21
  4. package/dist/components/Login/sumsub/index.js +212 -0
  5. package/dist/components/Login/veriff/Login.js +168 -0
  6. package/dist/components/Login/veriff/index.js +14 -0
  7. package/dist/components/Login/yoti/Login.js +235 -0
  8. package/dist/components/Login/yoti/index.js +14 -0
  9. package/dist/components/OnBoarding/authId/index.js +47 -13
  10. package/dist/components/OnBoarding/sumsub/index.js +183 -0
  11. package/dist/components/OnBoarding/vender/grid/index.js +9 -9
  12. package/dist/components/OnBoarding/veriff/index.js +152 -0
  13. package/dist/components/OnBoarding/yoti/OnBoarding.js +228 -0
  14. package/dist/components/OnBoarding/yoti/index.js +14 -0
  15. package/dist/components/SendSns/index.js +18 -13
  16. package/dist/components/TryAgain.js +4 -5
  17. package/dist/components/VerifyWithPhoneNumber/NewUser/index.js +8 -8
  18. package/dist/components/VerifyWithPhoneNumber/User/index.js +17 -12
  19. package/dist/enum/index.js +6 -0
  20. package/dist/types/BerifymeModal/index.d.ts +1 -1
  21. package/dist/types/api/api.d.ts +19 -2
  22. package/dist/types/components/Login/sumsub/index.d.ts +10 -0
  23. package/dist/types/components/Login/veriff/Login.d.ts +12 -0
  24. package/dist/types/components/Login/veriff/index.d.ts +11 -0
  25. package/dist/types/components/Login/yoti/Login.d.ts +11 -0
  26. package/dist/types/components/Login/yoti/index.d.ts +10 -0
  27. package/dist/types/components/OnBoarding/authId/index.d.ts +3 -1
  28. package/dist/types/components/OnBoarding/sumsub/index.d.ts +10 -0
  29. package/dist/types/components/OnBoarding/veriff/index.d.ts +11 -0
  30. package/dist/types/components/OnBoarding/yoti/OnBoarding.d.ts +12 -0
  31. package/dist/types/components/OnBoarding/yoti/index.d.ts +11 -0
  32. package/dist/types/components/SendSns/index.d.ts +1 -1
  33. package/dist/types/components/VerifyWithPhoneNumber/User/index.d.ts +1 -1
  34. package/dist/types/enum/index.d.ts +6 -0
  35. package/package.json +1 -1
@@ -0,0 +1,168 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { Box, CircularProgress } from '@mui/material';
38
+ import { createVeriffFrame, MESSAGES } from '@veriff/incontext-sdk';
39
+ //@ts-expect-error - Veriff sample code
40
+ import { Veriff } from '@veriff/js-sdk';
41
+ import React, { useCallback, useEffect, useState } from 'react';
42
+ import berifymeApi from '../../../api/api';
43
+ import { createDeveloperLog } from '../../createDeveloperLog';
44
+ export default function LoginComponent(_a) {
45
+ var _this = this;
46
+ var user = _a.user, setUser = _a.setUser, onSuccess = _a.onSuccess, onGoBack = _a.onGoBack, onError = _a.onError, token = _a.token;
47
+ var _b = useState(), step = _b[0], setStep = _b[1];
48
+ var _c = useState(false), initFinished = _c[0], setInitFinished = _c[1];
49
+ var _d = useState(), sessionId = _d[0], setSessionId = _d[1];
50
+ var onFinishedVeriff = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
51
+ var faceLoginResult, userResponse;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ if (!user.veriffId)
56
+ return [2 /*return*/];
57
+ return [4 /*yield*/, berifymeApi.veriff.getVeriffFaceLoginResult({ sessionId: sessionId || '' })];
58
+ case 1:
59
+ faceLoginResult = _a.sent();
60
+ if ('error' in faceLoginResult) {
61
+ console.error(faceLoginResult.error);
62
+ createDeveloperLog({
63
+ userId: user === null || user === void 0 ? void 0 : user.id,
64
+ userDataJson: user,
65
+ source: 'FRONTEND',
66
+ action: 'veriff api',
67
+ sessionToken: token,
68
+ firstDetail: 'getFaceLoginResult',
69
+ secondDetail: faceLoginResult.error,
70
+ });
71
+ onError('Oops! Something went wrong...');
72
+ return [2 /*return*/];
73
+ }
74
+ if (!faceLoginResult.isVerified) {
75
+ console.error('faceLoginResult.isVerified is false');
76
+ createDeveloperLog({
77
+ userId: user === null || user === void 0 ? void 0 : user.id,
78
+ userDataJson: user,
79
+ source: 'FRONTEND',
80
+ action: 'veriff api',
81
+ sessionToken: token,
82
+ firstDetail: 'getFaceLoginResult',
83
+ secondDetail: 'isVerified is false',
84
+ });
85
+ onError('Face verification failed');
86
+ return [2 /*return*/];
87
+ }
88
+ return [4 /*yield*/, berifymeApi.veriff.getUserByVeriffId({ veriffId: user.veriffId })];
89
+ case 2:
90
+ userResponse = _a.sent();
91
+ if ('error' in userResponse) {
92
+ console.log('error', userResponse.error);
93
+ createDeveloperLog({
94
+ userId: user === null || user === void 0 ? void 0 : user.id,
95
+ userDataJson: user,
96
+ source: 'FRONTEND',
97
+ action: 'veriff api',
98
+ sessionToken: token,
99
+ firstDetail: 'getUserByVeriffId',
100
+ secondDetail: userResponse.error,
101
+ });
102
+ onError('Oops! Something went wrong...');
103
+ return [2 /*return*/];
104
+ }
105
+ setUser(userResponse.user);
106
+ onSuccess();
107
+ return [2 /*return*/];
108
+ }
109
+ });
110
+ }); }, [user, sessionId, setUser, onSuccess, token, onError]);
111
+ var onCancelVeriff = useCallback(function () {
112
+ onGoBack();
113
+ }, [onGoBack]);
114
+ useEffect(function () {
115
+ if (!user.phoneNumber)
116
+ return;
117
+ setInitFinished(false);
118
+ var veriff = Veriff({
119
+ host: 'https://api.veriff.me',
120
+ apiKey: 'ec9ca5ea-d883-4da3-a7e8-843d070d7cd1',
121
+ parentId: 'veriff-root',
122
+ onSession: function (err, response) {
123
+ console.log(err);
124
+ setSessionId(response.verification.id);
125
+ createVeriffFrame({ url: response.verification.url, onEvent: function (msg) { setStep(msg); } });
126
+ }
127
+ });
128
+ veriff.setParams({
129
+ person: {
130
+ givenName: ' ',
131
+ lastName: ' '
132
+ },
133
+ vendorData: user.phoneNumber,
134
+ });
135
+ veriff.mount();
136
+ setInitFinished(true);
137
+ }, [user.phoneNumber]);
138
+ useEffect(function () {
139
+ switch (step) {
140
+ case MESSAGES.FINISHED:
141
+ onFinishedVeriff();
142
+ break;
143
+ case MESSAGES.CANCELED:
144
+ onCancelVeriff();
145
+ break;
146
+ default:
147
+ break;
148
+ }
149
+ }, [onFinishedVeriff, onCancelVeriff, step]);
150
+ useEffect(function () {
151
+ var timeoutHandle = setTimeout(function () {
152
+ var _a;
153
+ if (!initFinished)
154
+ return;
155
+ (_a = document.getElementById('veriff-submit-btn')) === null || _a === void 0 ? void 0 : _a.click();
156
+ }, 100);
157
+ return function () { return clearTimeout(timeoutHandle); };
158
+ }, [initFinished]);
159
+ return (React.createElement(Box, { style: {
160
+ display: 'flex',
161
+ flexDirection: 'column',
162
+ alignItems: 'center',
163
+ justifyContent: 'center',
164
+ height: '100vh',
165
+ } },
166
+ React.createElement(CircularProgress, { color: "inherit" }),
167
+ React.createElement("div", { id: 'veriff-root', style: { height: 0, opacity: 0 } })));
168
+ }
@@ -0,0 +1,14 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import TryAgain from '../../TryAgain';
3
+ import Login from './Login';
4
+ var VeriffLogin = function (_a) {
5
+ var user = _a.user, setUser = _a.setUser, onSuccess = _a.onSuccess, onGoBack = _a.onGoBack, token = _a.token;
6
+ var _b = useState(), error = _b[0], setError = _b[1];
7
+ var handleError = useCallback(function (error) {
8
+ setError(error);
9
+ }, []);
10
+ if (error || !token)
11
+ return (React.createElement(TryAgain, { message: error }));
12
+ return (React.createElement(Login, { user: user, setUser: setUser, onSuccess: onSuccess, onGoBack: onGoBack, onError: handleError, token: token }));
13
+ };
14
+ export default VeriffLogin;
@@ -0,0 +1,235 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { CircularProgress, Stack, Typography } from '@mui/material';
38
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
39
+ import berifymeApi from '../../../api/api';
40
+ import { delay } from '../../../common';
41
+ import { createDeveloperLog } from '../../createDeveloperLog';
42
+ var RETRY_INTERVAL = 1000 * 2;
43
+ var Login = function (_a) {
44
+ var user = _a.user, setUser = _a.setUser, onSuccess = _a.onSuccess, onError = _a.onError, token = _a.token;
45
+ var _b = useState(), session = _b[0], setSession = _b[1];
46
+ var _c = useState(), loading = _c[0], setLoading = _c[1];
47
+ var sessionRef = useRef();
48
+ var handleSuccess = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
49
+ var faceLoginResultResponse, userResponse, error_1;
50
+ return __generator(this, function (_a) {
51
+ switch (_a.label) {
52
+ case 0:
53
+ createDeveloperLog({
54
+ userId: user === null || user === void 0 ? void 0 : user.id,
55
+ userDataJson: user,
56
+ source: 'FRONTEND',
57
+ action: 'yoti step',
58
+ sessionToken: token,
59
+ firstDetail: 'handleSuccess',
60
+ secondDetail: JSON.stringify(sessionRef.current),
61
+ });
62
+ if (!sessionRef.current)
63
+ return [2 /*return*/];
64
+ if (!user.yotiId)
65
+ return [2 /*return*/];
66
+ _a.label = 1;
67
+ case 1:
68
+ _a.trys.push([1, 10, 11, 12]);
69
+ setLoading('We are processing your data');
70
+ faceLoginResultResponse = void 0;
71
+ _a.label = 2;
72
+ case 2: return [4 /*yield*/, berifymeApi.yoti.getYotiFaceLoginResult({ sessionId: sessionRef.current.sessionId })];
73
+ case 3:
74
+ faceLoginResultResponse = _a.sent();
75
+ createDeveloperLog({
76
+ userId: user === null || user === void 0 ? void 0 : user.id,
77
+ userDataJson: user,
78
+ source: 'FRONTEND',
79
+ action: 'yoti api',
80
+ sessionToken: token,
81
+ firstDetail: 'getYotiFaceLoginResult',
82
+ secondDetail: JSON.stringify(faceLoginResultResponse),
83
+ });
84
+ if (!('error' in faceLoginResultResponse)) return [3 /*break*/, 6];
85
+ if (!(faceLoginResultResponse.error === 'Session ongoing')) return [3 /*break*/, 5];
86
+ return [4 /*yield*/, delay(RETRY_INTERVAL)];
87
+ case 4:
88
+ _a.sent();
89
+ return [3 /*break*/, 7];
90
+ case 5:
91
+ onError('Oops! Something went wrong. Please try again later.');
92
+ return [2 /*return*/];
93
+ case 6: return [3 /*break*/, 8];
94
+ case 7:
95
+ if (true) return [3 /*break*/, 2];
96
+ _a.label = 8;
97
+ case 8:
98
+ if (!faceLoginResultResponse.isVerified) {
99
+ console.error('faceLoginResult.isVerified is false');
100
+ createDeveloperLog({
101
+ userId: user === null || user === void 0 ? void 0 : user.id,
102
+ userDataJson: user,
103
+ source: 'FRONTEND',
104
+ action: 'veriff api',
105
+ sessionToken: token,
106
+ firstDetail: 'getYotiFaceLoginResult',
107
+ secondDetail: 'isVerified is false',
108
+ });
109
+ onError('Face verification failed');
110
+ return [2 /*return*/];
111
+ }
112
+ return [4 /*yield*/, berifymeApi.user.getUserByYotiId({ yotiId: user.yotiId })];
113
+ case 9:
114
+ userResponse = _a.sent();
115
+ createDeveloperLog({
116
+ userId: user === null || user === void 0 ? void 0 : user.id,
117
+ userDataJson: user,
118
+ source: 'FRONTEND',
119
+ action: 'yoti api',
120
+ sessionToken: token,
121
+ firstDetail: 'getUserByYotiId',
122
+ secondDetail: JSON.stringify(userResponse),
123
+ });
124
+ if ('error' in userResponse) {
125
+ onError('Oops! Something went wrong. Please try again later.');
126
+ return [2 /*return*/];
127
+ }
128
+ setUser(userResponse.user);
129
+ onSuccess();
130
+ return [3 /*break*/, 12];
131
+ case 10:
132
+ error_1 = _a.sent();
133
+ onError('Oops! Something went wrong. Please try again later.');
134
+ return [3 /*break*/, 12];
135
+ case 11:
136
+ setLoading(undefined);
137
+ return [7 /*endfinally*/];
138
+ case 12: return [2 /*return*/];
139
+ }
140
+ });
141
+ }); }, [onError, onSuccess, setUser, token, user]);
142
+ var handleError = useCallback(function () {
143
+ createDeveloperLog({
144
+ userId: user === null || user === void 0 ? void 0 : user.id,
145
+ userDataJson: user,
146
+ source: 'FRONTEND',
147
+ action: 'yoti step',
148
+ sessionToken: token,
149
+ firstDetail: 'handleError',
150
+ secondDetail: JSON.stringify(sessionRef.current),
151
+ });
152
+ onError('Oops! Something went wrong. Please try again later.');
153
+ }, [onError, token, user]);
154
+ var initYoti = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
155
+ var response, error_2;
156
+ return __generator(this, function (_a) {
157
+ switch (_a.label) {
158
+ case 0:
159
+ if (!(user === null || user === void 0 ? void 0 : user.yotiId) || !token)
160
+ return [2 /*return*/];
161
+ _a.label = 1;
162
+ case 1:
163
+ _a.trys.push([1, 3, 4, 5]);
164
+ setLoading('Loading...');
165
+ return [4 /*yield*/, berifymeApi.yoti.createYotiFaceLoginSession({ sessionId: user.yotiId })];
166
+ case 2:
167
+ response = _a.sent();
168
+ createDeveloperLog({
169
+ userId: user.id,
170
+ userDataJson: user,
171
+ source: 'FRONTEND',
172
+ action: 'yoti api',
173
+ sessionToken: token,
174
+ firstDetail: 'createYotiSession',
175
+ secondDetail: JSON.stringify(response),
176
+ });
177
+ if ('error' in response) {
178
+ onError('Oops! Something went wrong. Please try again later.');
179
+ return [2 /*return*/];
180
+ }
181
+ setSession(response);
182
+ return [3 /*break*/, 5];
183
+ case 3:
184
+ error_2 = _a.sent();
185
+ onError('Oops! Something went wrong. Please try again later.');
186
+ return [3 /*break*/, 5];
187
+ case 4:
188
+ setLoading(undefined);
189
+ return [7 /*endfinally*/];
190
+ case 5: return [2 /*return*/];
191
+ }
192
+ });
193
+ }); }, [onError, token, user]);
194
+ var initListener = useCallback(function () {
195
+ window.addEventListener('message', function (event) {
196
+ createDeveloperLog({
197
+ userId: user === null || user === void 0 ? void 0 : user.id,
198
+ userDataJson: user,
199
+ source: 'FRONTEND',
200
+ action: 'yoti event',
201
+ sessionToken: token,
202
+ firstDetail: 'event.data.eventType',
203
+ secondDetail: JSON.stringify(event.data),
204
+ });
205
+ switch (event.data.eventType) {
206
+ case 'SUCCESS':
207
+ handleSuccess();
208
+ break;
209
+ case 'ERROR':
210
+ handleError();
211
+ break;
212
+ default:
213
+ break;
214
+ }
215
+ });
216
+ return function () {
217
+ window.removeEventListener('message', function () { });
218
+ };
219
+ }, [user, token, handleSuccess, handleError]);
220
+ useEffect(function () {
221
+ initYoti();
222
+ }, [initYoti]);
223
+ useEffect(function () {
224
+ initListener();
225
+ }, [initListener]);
226
+ useEffect(function () {
227
+ sessionRef.current = session;
228
+ }, [session]);
229
+ if (loading)
230
+ return (React.createElement(Stack, { justifyContent: 'center', alignItems: 'center', height: '100%', spacing: 2 },
231
+ React.createElement(CircularProgress, { color: "inherit" }),
232
+ React.createElement(Typography, { color: '#585858' }, loading)));
233
+ return (React.createElement(React.Fragment, null, session && (React.createElement("iframe", { src: "https://api.yoti.com/idverify/v1/web/index.html?sessionID=".concat(session.sessionId, "&sessionToken=").concat(session.clientSessionToken), allow: "camera", width: "100%", height: "100%", id: "yoti", frameBorder: "0" }))));
234
+ };
235
+ export default Login;
@@ -0,0 +1,14 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import TryAgain from '../../TryAgain';
3
+ import Login from './Login';
4
+ var YotiLogin = function (_a) {
5
+ var user = _a.user, setUser = _a.setUser, onSuccess = _a.onSuccess, token = _a.token;
6
+ var _b = useState(), error = _b[0], setError = _b[1];
7
+ var handleError = useCallback(function (error) {
8
+ setError(error);
9
+ }, []);
10
+ if (error || !token)
11
+ return (React.createElement(TryAgain, { message: error }));
12
+ return (React.createElement(Login, { user: user, setUser: setUser, onSuccess: onSuccess, onError: handleError, token: token }));
13
+ };
14
+ export default YotiLogin;
@@ -45,7 +45,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
45
45
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
46
  }
47
47
  };
48
- import React from "react";
48
+ import React, { useRef } from "react";
49
49
  import AuthIDComponent from "@authid/react-component";
50
50
  import { Box, CircularProgress } from "@mui/material";
51
51
  import { useEffect, useState } from "react";
@@ -53,10 +53,14 @@ import berifymeApi, { ActionType } from "../../../api/api";
53
53
  import { useSpeedTest } from "../../speedTest/SpeedProvider";
54
54
  import { createAuthenticationLog, updateAuthenticationLog } from "../../AuthenticationLogs";
55
55
  import { createDeveloperLog } from "../../createDeveloperLog";
56
+ import TryAgain from "../../TryAgain";
57
+ import { PageStatus } from "../../../enum";
56
58
  var AuthID = function (_a) {
57
- var goToAllSet = _a.goToAllSet, setError = _a.setError, userId = _a.userId, setUser = _a.setUser, selectedIdType = _a.selectedIdType, token = _a.token;
59
+ var goToAllSet = _a.goToAllSet, setError = _a.setError, userId = _a.userId, setUser = _a.setUser, selectedIdType = _a.selectedIdType, setSelectedIdType = _a.setSelectedIdType, token = _a.token, setPageStatus = _a.setPageStatus;
58
60
  var _b = useState(''), operationId = _b[0], setOperationId = _b[1];
59
61
  var _c = useState(''), url = _c[0], setUrl = _c[1];
62
+ var _d = useState(''), localError = _d[0], setLocalError = _d[1];
63
+ var notFoundCount = useRef(0);
60
64
  var stopSpeedTest = useSpeedTest().stopSpeedTest;
61
65
  useEffect(function () { stopSpeedTest(); }, []);
62
66
  //第零部 準備URL
@@ -289,13 +293,28 @@ var AuthID = function (_a) {
289
293
  if (url) {
290
294
  window.addEventListener('message', function (e) {
291
295
  if (e.data.type === 'authid:page') {
292
- console.log(e.data);
293
296
  if (e.data.pageName === 'verifiedPage') {
294
297
  setTimeout(function () {
295
298
  getProofTransactionStatus();
296
299
  }, 1000);
297
300
  }
298
301
  }
302
+ if (e.data.type === 'authid:control:page') {
303
+ // console.log('監聽器回傳e.data:', e.data);
304
+ // console.log('監聽器回傳e.data.params',e.data.params);
305
+ // console.log('監聽器回傳e.data.params.props',e.data.params.props);
306
+ // console.log('監聽器回傳e.data.params.props.reason',e.data.params.props.reason);
307
+ if (e.data.params.props.additionalReasons.length === 0 && e.data.params.props.reason === 'NOT_FOUND') {
308
+ notFoundCount.current += 1;
309
+ console.log('notFoundCount.current', notFoundCount.current);
310
+ if (notFoundCount.current >= 2) {
311
+ setLocalError('We are unable to verify your ID/Driver\'s License because it lacks a barcode.');
312
+ if (!setPageStatus) {
313
+ setError('We are unable to verify your ID/Driver\'s License because it lacks a barcode.');
314
+ }
315
+ }
316
+ }
317
+ }
299
318
  });
300
319
  }
301
320
  else {
@@ -309,15 +328,30 @@ var AuthID = function (_a) {
309
328
  });
310
329
  };
311
330
  }, [url]);
312
- return (React.createElement(React.Fragment, null, React.createElement(React.Fragment, null, url
313
- ? React.createElement(AuthIDComponent, { url: url, webauth: true })
314
- : React.createElement(Box, { sx: {
315
- display: 'flex',
316
- justifyContent: 'center',
317
- alignItems: 'center',
318
- height: '100vh',
319
- background: '#FFFFFF'
320
- } },
321
- React.createElement(CircularProgress, null)))));
331
+ return (React.createElement(React.Fragment, null, localError ?
332
+ React.createElement(TryAgain, { message: localError, pressButton: function () {
333
+ if (setPageStatus)
334
+ setPageStatus(PageStatus.IdOrPassport);
335
+ setSelectedIdType('');
336
+ } }) :
337
+ React.createElement(React.Fragment, null, url
338
+ ? React.createElement(AuthIDComponent
339
+ // 用上面監聽器即可
340
+ , {
341
+ // 用上面監聽器即可
342
+ control: function (
343
+ // msg: any, authidControlFace: any
344
+ ) {
345
+ // console.log('下方套件回傳, msg: ', msg);
346
+ // console.log('下方套件回傳, authidControlFace: ', authidControlFace);
347
+ }, url: url, webauth: true })
348
+ : React.createElement(Box, { sx: {
349
+ display: 'flex',
350
+ justifyContent: 'center',
351
+ alignItems: 'center',
352
+ height: '100vh',
353
+ background: '#FFFFFF'
354
+ } },
355
+ React.createElement(CircularProgress, null)))));
322
356
  };
323
357
  export default AuthID;