@bytexbyte/berifyme-react-sdk 1.0.0 → 1.0.2

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.
@@ -0,0 +1,228 @@
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 OnBoarding = function (_a) {
44
+ var user = _a.user, setUser = _a.setUser, onSuccess = _a.onSuccess, onError = _a.onError, onGoBack = _a.onGoBack, 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 approveResponse, 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
+ _a.label = 1;
65
+ case 1:
66
+ _a.trys.push([1, 10, 11, 12]);
67
+ setLoading('We are processing your data');
68
+ approveResponse = void 0;
69
+ _a.label = 2;
70
+ case 2: return [4 /*yield*/, berifymeApi.yoti.approveYotiUser({ sessionId: sessionRef.current.sessionId })];
71
+ case 3:
72
+ approveResponse = _a.sent();
73
+ createDeveloperLog({
74
+ userId: user === null || user === void 0 ? void 0 : user.id,
75
+ userDataJson: user,
76
+ source: 'FRONTEND',
77
+ action: 'yoti api',
78
+ sessionToken: token,
79
+ firstDetail: 'approveYotiUser',
80
+ secondDetail: JSON.stringify(approveResponse),
81
+ });
82
+ if (!('error' in approveResponse)) return [3 /*break*/, 6];
83
+ if (!(approveResponse.error === 'Session ongoing')) return [3 /*break*/, 5];
84
+ return [4 /*yield*/, delay(RETRY_INTERVAL)];
85
+ case 4:
86
+ _a.sent();
87
+ return [3 /*break*/, 7];
88
+ case 5:
89
+ onError('Oops! Something went wrong. Please try again later.');
90
+ return [2 /*return*/];
91
+ case 6:
92
+ if (approveResponse.yotiId)
93
+ return [3 /*break*/, 8];
94
+ _a.label = 7;
95
+ case 7:
96
+ if (true) return [3 /*break*/, 2];
97
+ _a.label = 8;
98
+ case 8: return [4 /*yield*/, berifymeApi.user.getUserByYotiId({ yotiId: approveResponse.yotiId })];
99
+ case 9:
100
+ userResponse = _a.sent();
101
+ createDeveloperLog({
102
+ userId: user === null || user === void 0 ? void 0 : user.id,
103
+ userDataJson: user,
104
+ source: 'FRONTEND',
105
+ action: 'yoti api',
106
+ sessionToken: token,
107
+ firstDetail: 'getUserByYotiId',
108
+ secondDetail: JSON.stringify(userResponse),
109
+ });
110
+ if ('error' in userResponse) {
111
+ onError('Oops! Something went wrong. Please try again later.');
112
+ return [2 /*return*/];
113
+ }
114
+ setUser(userResponse.user);
115
+ onSuccess();
116
+ return [3 /*break*/, 12];
117
+ case 10:
118
+ error_1 = _a.sent();
119
+ onError('Oops! Something went wrong. Please try again later.');
120
+ return [3 /*break*/, 12];
121
+ case 11:
122
+ setLoading(undefined);
123
+ return [7 /*endfinally*/];
124
+ case 12: return [2 /*return*/];
125
+ }
126
+ });
127
+ }); }, [onError, onSuccess, setUser, token, user]);
128
+ var handleError = useCallback(function (eventCode) {
129
+ createDeveloperLog({
130
+ userId: user === null || user === void 0 ? void 0 : user.id,
131
+ userDataJson: user,
132
+ source: 'FRONTEND',
133
+ action: 'yoti step',
134
+ sessionToken: token,
135
+ firstDetail: 'handleError',
136
+ secondDetail: JSON.stringify(sessionRef.current),
137
+ });
138
+ switch (eventCode) {
139
+ case 7000:
140
+ onGoBack();
141
+ break;
142
+ default:
143
+ onError('Oops! Something went wrong. Please try again later.');
144
+ break;
145
+ }
146
+ }, [onError, onGoBack, token, user]);
147
+ var initYoti = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
148
+ var response, error_2;
149
+ return __generator(this, function (_a) {
150
+ switch (_a.label) {
151
+ case 0:
152
+ if (!(user === null || user === void 0 ? void 0 : user.phoneNumber) || !token)
153
+ return [2 /*return*/];
154
+ _a.label = 1;
155
+ case 1:
156
+ _a.trys.push([1, 3, 4, 5]);
157
+ setLoading('Loading...');
158
+ return [4 /*yield*/, berifymeApi.yoti.createYotiIDVSession({ phoneNumber: user.phoneNumber })];
159
+ case 2:
160
+ response = _a.sent();
161
+ createDeveloperLog({
162
+ userId: user.id,
163
+ userDataJson: user,
164
+ source: 'FRONTEND',
165
+ action: 'yoti api',
166
+ sessionToken: token,
167
+ firstDetail: 'createYotiSession',
168
+ secondDetail: JSON.stringify(response),
169
+ });
170
+ if ('error' in response) {
171
+ onError('Oops! Something went wrong. Please try again later.');
172
+ return [2 /*return*/];
173
+ }
174
+ setSession(response);
175
+ return [3 /*break*/, 5];
176
+ case 3:
177
+ error_2 = _a.sent();
178
+ onError('Oops! Something went wrong. Please try again later.');
179
+ return [3 /*break*/, 5];
180
+ case 4:
181
+ setLoading(undefined);
182
+ return [7 /*endfinally*/];
183
+ case 5: return [2 /*return*/];
184
+ }
185
+ });
186
+ }); }, [onError, token, user]);
187
+ var initListener = useCallback(function () {
188
+ window.addEventListener('message', function (event) {
189
+ createDeveloperLog({
190
+ userId: user === null || user === void 0 ? void 0 : user.id,
191
+ userDataJson: user,
192
+ source: 'FRONTEND',
193
+ action: 'yoti event',
194
+ sessionToken: token,
195
+ firstDetail: 'event.data.eventType',
196
+ secondDetail: JSON.stringify(event.data),
197
+ });
198
+ switch (event.data.eventType) {
199
+ case 'SUCCESS':
200
+ handleSuccess();
201
+ break;
202
+ case 'ERROR':
203
+ handleError(event.data.eventCode);
204
+ break;
205
+ default:
206
+ break;
207
+ }
208
+ });
209
+ return function () {
210
+ window.removeEventListener('message', function () { });
211
+ };
212
+ }, [user, token, handleSuccess, handleError]);
213
+ useEffect(function () {
214
+ initYoti();
215
+ }, [initYoti]);
216
+ useEffect(function () {
217
+ initListener();
218
+ }, [initListener]);
219
+ useEffect(function () {
220
+ sessionRef.current = session;
221
+ }, [session]);
222
+ if (loading)
223
+ return (React.createElement(Stack, { justifyContent: 'center', alignItems: 'center', height: '100%', spacing: 2 },
224
+ React.createElement(CircularProgress, { color: "inherit" }),
225
+ React.createElement(Typography, { color: '#585858' }, loading)));
226
+ 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" }))));
227
+ };
228
+ export default OnBoarding;
@@ -0,0 +1,14 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import TryAgain from '../../TryAgain';
3
+ import OnBoarding from './OnBoarding';
4
+ var YotiOnBoarding = 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(OnBoarding, { user: user, setUser: setUser, onSuccess: onSuccess, onError: handleError, onGoBack: onGoBack, token: token }));
13
+ };
14
+ export default YotiOnBoarding;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ goToAllSet: () => void;
7
+ token?: string;
8
+ }
9
+ declare const SumsubLogin: ({ user, setUser, goToAllSet, token }: Props) => React.JSX.Element;
10
+ export default SumsubLogin;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ onSuccess: () => void;
7
+ onGoBack: () => void;
8
+ onError: (error: string) => void;
9
+ token?: string;
10
+ }
11
+ export default function LoginComponent({ user, setUser, onSuccess, onGoBack, onError, token }: Props): React.JSX.Element;
12
+ export {};
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ onSuccess: () => void;
7
+ onGoBack: () => void;
8
+ token?: string;
9
+ }
10
+ declare const VeriffLogin: ({ user, setUser, onSuccess, onGoBack, token }: Props) => React.JSX.Element;
11
+ export default VeriffLogin;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ onSuccess: () => void;
7
+ onError: (error: string) => void;
8
+ token?: string;
9
+ }
10
+ declare const Login: ({ user, setUser, onSuccess, onError, token }: Props) => React.JSX.Element;
11
+ export default Login;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ onSuccess: () => void;
7
+ token?: string;
8
+ }
9
+ declare const YotiLogin: ({ user, setUser, onSuccess, token }: Props) => React.JSX.Element;
10
+ export default YotiLogin;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ goToAllSet: () => void;
7
+ token?: string;
8
+ }
9
+ declare const SumsubOnBoarding: ({ user, setUser, goToAllSet, token }: Props) => React.JSX.Element;
10
+ export default SumsubOnBoarding;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ goBack: () => void;
7
+ goToAllSet: () => void;
8
+ token?: string;
9
+ }
10
+ declare const VeriffOnBoarding: ({ user, setUser, goBack, goToAllSet, token }: Props) => React.JSX.Element;
11
+ export default VeriffOnBoarding;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ onSuccess: () => void;
7
+ onError: (error: string) => void;
8
+ onGoBack: () => void;
9
+ token?: string;
10
+ }
11
+ declare const OnBoarding: ({ user, setUser, onSuccess, onError, onGoBack, token }: Props) => React.JSX.Element;
12
+ export default OnBoarding;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { UserWithAgeAndFullName } from '../../../api/api';
3
+ interface Props {
4
+ user: UserWithAgeAndFullName;
5
+ setUser: React.Dispatch<React.SetStateAction<UserWithAgeAndFullName | undefined>>;
6
+ onSuccess: () => void;
7
+ onGoBack: () => void;
8
+ token?: string;
9
+ }
10
+ declare const YotiOnBoarding: ({ user, setUser, onSuccess, onGoBack, token }: Props) => React.JSX.Element;
11
+ export default YotiOnBoarding;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytexbyte/berifyme-react-sdk",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/types/index.d.ts",