@ha_tecno/live-id-sdk 2.12.3 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. package/lib/commonjs/components/Typograph/typograph.js +28 -0
  2. package/lib/commonjs/components/Typograph/typograph.js.map +1 -0
  3. package/lib/commonjs/components/index.js +14 -0
  4. package/lib/commonjs/components/index.js.map +1 -1
  5. package/lib/commonjs/index.js +12 -0
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsBiometrics.js +185 -0
  8. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsBiometrics.js.map +1 -0
  9. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsLifeCertificate.js +165 -0
  10. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsLifeCertificate.js.map +1 -0
  11. package/lib/commonjs/screens/RegisterOperations/styles.js +47 -0
  12. package/lib/commonjs/screens/RegisterOperations/styles.js.map +1 -0
  13. package/lib/commonjs/screens/index.js +14 -0
  14. package/lib/commonjs/screens/index.js.map +1 -1
  15. package/lib/commonjs/services/index.js +18 -0
  16. package/lib/commonjs/services/index.js.map +1 -1
  17. package/lib/commonjs/services/services.js +106 -1
  18. package/lib/commonjs/services/services.js.map +1 -1
  19. package/lib/commonjs/store/modules/operationPoints/index.js +19 -0
  20. package/lib/commonjs/store/modules/operationPoints/index.js.map +1 -0
  21. package/lib/commonjs/store/modules/operationPoints/selectors.js +13 -0
  22. package/lib/commonjs/store/modules/operationPoints/selectors.js.map +1 -0
  23. package/lib/commonjs/store/modules/operationPoints/slice.js +233 -0
  24. package/lib/commonjs/store/modules/operationPoints/slice.js.map +1 -0
  25. package/lib/commonjs/store/modules/operationPoints/types.js +2 -0
  26. package/lib/commonjs/store/modules/operationPoints/types.js.map +1 -0
  27. package/lib/commonjs/utils/index.js +12 -0
  28. package/lib/commonjs/utils/index.js.map +1 -1
  29. package/lib/commonjs/utils/utils.js +9 -1
  30. package/lib/commonjs/utils/utils.js.map +1 -1
  31. package/lib/module/components/Typograph/typograph.js +21 -0
  32. package/lib/module/components/Typograph/typograph.js.map +1 -0
  33. package/lib/module/components/index.js +3 -1
  34. package/lib/module/components/index.js.map +1 -1
  35. package/lib/module/index.js +2 -2
  36. package/lib/module/index.js.map +1 -1
  37. package/lib/module/screens/RegisterOperations/registerOperationPointsBiometrics.js +176 -0
  38. package/lib/module/screens/RegisterOperations/registerOperationPointsBiometrics.js.map +1 -0
  39. package/lib/module/screens/RegisterOperations/registerOperationPointsLifeCertificate.js +157 -0
  40. package/lib/module/screens/RegisterOperations/registerOperationPointsLifeCertificate.js.map +1 -0
  41. package/lib/module/screens/RegisterOperations/styles.js +41 -0
  42. package/lib/module/screens/RegisterOperations/styles.js.map +1 -0
  43. package/lib/module/screens/index.js +3 -1
  44. package/lib/module/screens/index.js.map +1 -1
  45. package/lib/module/services/index.js +2 -2
  46. package/lib/module/services/index.js.map +1 -1
  47. package/lib/module/services/services.js +102 -0
  48. package/lib/module/services/services.js.map +1 -1
  49. package/lib/module/store/modules/operationPoints/index.js +3 -0
  50. package/lib/module/store/modules/operationPoints/index.js.map +1 -0
  51. package/lib/module/store/modules/operationPoints/selectors.js +6 -0
  52. package/lib/module/store/modules/operationPoints/selectors.js.map +1 -0
  53. package/lib/module/store/modules/operationPoints/slice.js +227 -0
  54. package/lib/module/store/modules/operationPoints/slice.js.map +1 -0
  55. package/lib/module/store/modules/operationPoints/types.js +2 -0
  56. package/lib/module/store/modules/operationPoints/types.js.map +1 -0
  57. package/lib/module/utils/index.js +2 -2
  58. package/lib/module/utils/index.js.map +1 -1
  59. package/lib/module/utils/utils.js +7 -1
  60. package/lib/module/utils/utils.js.map +1 -1
  61. package/lib/typescript/src/components/Typograph/typograph.d.ts +10 -0
  62. package/lib/typescript/src/components/Typograph/typograph.d.ts.map +1 -0
  63. package/lib/typescript/src/components/index.d.ts +3 -1
  64. package/lib/typescript/src/components/index.d.ts.map +1 -1
  65. package/lib/typescript/src/index.d.ts +2 -2
  66. package/lib/typescript/src/index.d.ts.map +1 -1
  67. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsBiometrics.d.ts +7 -0
  68. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsBiometrics.d.ts.map +1 -0
  69. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsLifeCertificate.d.ts +7 -0
  70. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsLifeCertificate.d.ts.map +1 -0
  71. package/lib/typescript/src/screens/RegisterOperations/styles.d.ts +40 -0
  72. package/lib/typescript/src/screens/RegisterOperations/styles.d.ts.map +1 -0
  73. package/lib/typescript/src/screens/index.d.ts +3 -1
  74. package/lib/typescript/src/screens/index.d.ts.map +1 -1
  75. package/lib/typescript/src/services/index.d.ts +2 -2
  76. package/lib/typescript/src/services/index.d.ts.map +1 -1
  77. package/lib/typescript/src/services/services.d.ts +4 -1
  78. package/lib/typescript/src/services/services.d.ts.map +1 -1
  79. package/lib/typescript/src/services/types.d.ts +29 -0
  80. package/lib/typescript/src/services/types.d.ts.map +1 -1
  81. package/lib/typescript/src/store/modules/operationPoints/index.d.ts +3 -0
  82. package/lib/typescript/src/store/modules/operationPoints/index.d.ts.map +1 -0
  83. package/lib/typescript/src/store/modules/operationPoints/selectors.d.ts +24 -0
  84. package/lib/typescript/src/store/modules/operationPoints/selectors.d.ts.map +1 -0
  85. package/lib/typescript/src/store/modules/operationPoints/slice.d.ts +4 -0
  86. package/lib/typescript/src/store/modules/operationPoints/slice.d.ts.map +1 -0
  87. package/lib/typescript/src/store/modules/operationPoints/types.d.ts +51 -0
  88. package/lib/typescript/src/store/modules/operationPoints/types.d.ts.map +1 -0
  89. package/lib/typescript/src/utils/index.d.ts +2 -2
  90. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  91. package/lib/typescript/src/utils/utils.d.ts +3 -1
  92. package/lib/typescript/src/utils/utils.d.ts.map +1 -1
  93. package/package.json +2 -1
  94. package/src/components/Typograph/typograph.tsx +24 -0
  95. package/src/components/index.ts +3 -1
  96. package/src/index.tsx +14 -2
  97. package/src/screens/RegisterOperations/registerOperationPointsBiometrics.tsx +168 -0
  98. package/src/screens/RegisterOperations/registerOperationPointsLifeCertificate.tsx +175 -0
  99. package/src/screens/RegisterOperations/styles.ts +41 -0
  100. package/src/screens/index.ts +9 -1
  101. package/src/services/index.ts +18 -2
  102. package/src/services/services.ts +113 -1
  103. package/src/services/types.ts +33 -0
  104. package/src/store/modules/operationPoints/index.ts +3 -0
  105. package/src/store/modules/operationPoints/selectors.ts +7 -0
  106. package/src/store/modules/operationPoints/slice.ts +240 -0
  107. package/src/store/modules/operationPoints/types.ts +61 -0
  108. package/src/utils/index.ts +2 -2
  109. package/src/utils/utils.ts +9 -1
@@ -0,0 +1,240 @@
1
+ import { create } from "zustand";
2
+ import {
3
+ ExposureMapOperationPoints,
4
+ InitialState,
5
+ OperationPointsState,
6
+ SendImagesBase64Payload,
7
+ SetImageBase64Payload,
8
+ sendVideosLifeCertificatePayload
9
+ } from "./types";
10
+ import { Platform } from "react-native";
11
+ import {
12
+ getConfigOperationPoints,
13
+ sendImagesForRegisterOperationPoints,
14
+ sendVideoForRegisterOperationPoints
15
+ } from "../../../services";
16
+ import { getModel } from "react-native-device-info";
17
+ import { scale0to1, scale0to1Inverse } from "../../../utils";
18
+
19
+ const initialState: InitialState = {
20
+ state: {
21
+ loading: "idle",
22
+ hasConfigOperationPointsBiometrics: "idle",
23
+ hasConfigOperationPointsLifeCertificate: "idle",
24
+ base64Images: [],
25
+ exposureScaleZeroToOneBiometrics: Platform.OS === "android" ? 0.12 : 0.3,
26
+ exposureScaleZeroToOneLifeCertificate: Platform.OS === "android" ? 0.12 : 0.3,
27
+ registered: false,
28
+ helpStep: "introduction"
29
+ }
30
+ };
31
+
32
+ const resetState = () => {
33
+ slice.setState((state) => ({
34
+ state: {
35
+ ...state.state,
36
+ loading: "idle",
37
+ base64Images: [],
38
+ registered: false,
39
+ helpStep: "introduction"
40
+ }
41
+ }));
42
+ };
43
+
44
+ const loadingPending = () => {
45
+ slice.setState((state) => ({
46
+ state: {
47
+ ...state.state,
48
+ loading: "pending"
49
+ }
50
+ }));
51
+ };
52
+
53
+ const setImageBase64 = (imageBase64: SetImageBase64Payload) => {
54
+ slice.setState((state) => ({
55
+ state: {
56
+ ...state.state,
57
+ base64Images: [...state.state.base64Images, imageBase64]
58
+ }
59
+ }));
60
+ };
61
+
62
+ const changeExposureBiometrics = () => {
63
+ resetState();
64
+ const exposureMap: ExposureMapOperationPoints = {
65
+ 0.12: 0.2,
66
+ 0.2: 0.35,
67
+ 0.3: 0.4,
68
+ 0.35: 0.5,
69
+ 0.4: 0.5,
70
+ 0.5: Platform.OS === "android" ? 0.65 : 0.6,
71
+ 0.65: 0.8,
72
+ 0.6: 0.7,
73
+ 0.7: 0.3,
74
+ 0.8: 0.12
75
+ };
76
+ slice.setState((state) => {
77
+ const { exposureScaleZeroToOneBiometrics } = state.state;
78
+ return {
79
+ state: {
80
+ ...state.state,
81
+ exposureScaleZeroToOneBiometrics:
82
+ exposureMap[exposureScaleZeroToOneBiometrics] || exposureScaleZeroToOneBiometrics
83
+ }
84
+ };
85
+ });
86
+ };
87
+
88
+ const changeExposureLifeCertificate = () => {
89
+ resetState();
90
+ const exposureMap: ExposureMapOperationPoints = {
91
+ 0.12: 0.2,
92
+ 0.2: 0.35,
93
+ 0.3: 0.4,
94
+ 0.35: 0.5,
95
+ 0.4: 0.5,
96
+ 0.5: Platform.OS === "android" ? 0.65 : 0.6,
97
+ 0.65: 0.8,
98
+ 0.6: 0.7,
99
+ 0.7: 0.3,
100
+ 0.8: 0.12
101
+ };
102
+ slice.setState((state) => {
103
+ const { exposureScaleZeroToOneLifeCertificate } = state.state;
104
+ return {
105
+ state: {
106
+ ...state.state,
107
+ exposureScaleZeroToOneLifeCertificate:
108
+ exposureMap[exposureScaleZeroToOneLifeCertificate] || exposureScaleZeroToOneLifeCertificate
109
+ }
110
+ };
111
+ });
112
+ };
113
+
114
+ const handleStepHelp = () => {
115
+ slice.setState((state) => {
116
+ const { helpStep } = state.state;
117
+ return {
118
+ state: {
119
+ ...state.state,
120
+ helpStep: helpStep === "introduction" ? "instruction" : "introduction"
121
+ }
122
+ };
123
+ });
124
+ };
125
+
126
+ // separar a lógica do store
127
+ const getConfigDefault = async (operation: "finger" | "liveness") => {
128
+ const configs = await getConfigOperationPoints();
129
+ const deviceModel = getModel();
130
+ const deviceType = Platform.OS;
131
+ const configsDeviceType = configs.filter(
132
+ (config) => config.deviceType === deviceType && config.serviceType === operation
133
+ );
134
+ const configDeviceModel = configsDeviceType.find((config) => config.deviceModels.includes(deviceModel));
135
+ return configDeviceModel === undefined ? false : true;
136
+ };
137
+
138
+ const getConfigDefaultBiometrics = async () => {
139
+ const payload = await getConfigDefault("finger");
140
+ slice.setState((state) => ({
141
+ state: {
142
+ ...state.state,
143
+ hasConfigOperationPointsBiometrics: payload ? "notEmpty" : "empty"
144
+ }
145
+ }));
146
+ resetState();
147
+ };
148
+
149
+ const getConfigDefaultLifeCertificate = async () => {
150
+ const payload = await getConfigDefault("liveness");
151
+ slice.setState((state) => ({
152
+ state: {
153
+ ...state.state,
154
+ hasConfigOperationPointsLifeCertificate: payload ? "notEmpty" : "empty"
155
+ }
156
+ }));
157
+ resetState();
158
+ };
159
+
160
+ // separar a lógica do store
161
+ const sendImagesBase64 = async ({
162
+ exposureScaleZeroToOneBiometrics,
163
+ base64Images,
164
+ exposureMax,
165
+ exposureMin,
166
+ zoomMax,
167
+ zoomMin
168
+ }: SendImagesBase64Payload) => {
169
+ loadingPending();
170
+ const deviceModel = getModel();
171
+ const zoom = 3;
172
+ const zoomScaleZeroToOne = scale0to1(zoom, zoomMin, zoomMax);
173
+ const exposure = scale0to1Inverse(exposureScaleZeroToOneBiometrics, exposureMin, exposureMax);
174
+ const { message, status } = await sendImagesForRegisterOperationPoints({
175
+ deviceModel,
176
+ images: base64Images,
177
+ exposure,
178
+ exposureMin,
179
+ exposureMax,
180
+ exposureScaleZeroToOneBiometrics,
181
+ zoom,
182
+ zoomMin,
183
+ zoomMax,
184
+ zoomScaleZeroToOne
185
+ });
186
+ slice.setState((state) => ({
187
+ state: {
188
+ ...state.state,
189
+ loading: status === 200 ? "succeeded" : "failed",
190
+ status: status,
191
+ message: message
192
+ }
193
+ }));
194
+ };
195
+
196
+ // separar a lógica do store
197
+ const sendVideosLifeCertificate = async ({
198
+ exposureMax,
199
+ exposureMin,
200
+ videoPath,
201
+ exposureScaleZeroToOneLifeCertificate
202
+ }: sendVideosLifeCertificatePayload) => {
203
+ loadingPending();
204
+ const deviceModel = getModel();
205
+ const exposure = scale0to1Inverse(exposureScaleZeroToOneLifeCertificate, exposureMin, exposureMax);
206
+ const { message, status, hasConfig } = await sendVideoForRegisterOperationPoints({
207
+ deviceModel,
208
+ exposure,
209
+ videoPath,
210
+ exposureMax,
211
+ exposureMin,
212
+ exposureScaleZeroToOneLifeCertificate
213
+ });
214
+ slice.setState((state) => ({
215
+ state: {
216
+ ...state.state,
217
+ registered: hasConfig ?? false,
218
+ loading: status === 200 && hasConfig ? "succeeded" : "failed",
219
+ status: status,
220
+ message: message
221
+ }
222
+ }));
223
+ };
224
+
225
+ const slice = create<OperationPointsState>(() => ({
226
+ ...initialState,
227
+ dispatch: {
228
+ setImageBase64,
229
+ resetState,
230
+ changeExposureBiometrics,
231
+ changeExposureLifeCertificate,
232
+ handleStepHelp,
233
+ getConfigDefaultBiometrics,
234
+ getConfigDefaultLifeCertificate,
235
+ sendImagesBase64,
236
+ sendVideosLifeCertificate
237
+ }
238
+ }));
239
+
240
+ export default slice;
@@ -0,0 +1,61 @@
1
+ type ScaleZeroToOneAndroid = 0.12 | 0.2 | 0.35 | 0.5 | 0.65 | 0.8;
2
+ type ScaleZeroToOneIOS = 0.3 | 0.4 | 0.5 | 0.6 | 0.7;
3
+
4
+ type StatusConfigOperationPoints = "empty" | "notEmpty" | "idle";
5
+
6
+ type State = {
7
+ exposureScaleZeroToOneBiometrics: ScaleZeroToOneIOS | ScaleZeroToOneAndroid;
8
+ exposureScaleZeroToOneLifeCertificate: ScaleZeroToOneIOS | ScaleZeroToOneAndroid;
9
+ loading: "idle" | "pending" | "succeeded" | "failed";
10
+ hasConfigOperationPointsBiometrics: StatusConfigOperationPoints;
11
+ hasConfigOperationPointsLifeCertificate: StatusConfigOperationPoints;
12
+ base64Images: string[];
13
+ status?: number;
14
+ message?: string;
15
+ registered: boolean;
16
+ helpStep: "introduction" | "instruction";
17
+ };
18
+
19
+ type Dispatch = {
20
+ setImageBase64: (imageBase64: SetImageBase64Payload) => void;
21
+ resetState: () => void;
22
+ changeExposureBiometrics: () => void;
23
+ changeExposureLifeCertificate: () => void;
24
+ handleStepHelp: () => void;
25
+ getConfigDefaultBiometrics: () => void;
26
+ getConfigDefaultLifeCertificate: () => void;
27
+ sendImagesBase64: (payload: SendImagesBase64Payload) => void;
28
+ sendVideosLifeCertificate: (payload: sendVideosLifeCertificatePayload) => void;
29
+ };
30
+
31
+ export type InitialState = {
32
+ state: State;
33
+ };
34
+
35
+ export type OperationPointsState = {
36
+ state: State;
37
+ dispatch: Dispatch;
38
+ };
39
+
40
+ export type ExposureMapOperationPoints = Record<
41
+ State["exposureScaleZeroToOneBiometrics"],
42
+ State["exposureScaleZeroToOneBiometrics"]
43
+ >;
44
+
45
+ export type SetImageBase64Payload = string;
46
+
47
+ export type SendImagesBase64Payload = {
48
+ base64Images: string[];
49
+ exposureScaleZeroToOneBiometrics: State["exposureScaleZeroToOneBiometrics"];
50
+ exposureMin: number;
51
+ exposureMax: number;
52
+ zoomMin: number;
53
+ zoomMax: number;
54
+ };
55
+
56
+ export type sendVideosLifeCertificatePayload = {
57
+ exposureMin: number;
58
+ exposureMax: number;
59
+ videoPath: string;
60
+ exposureScaleZeroToOneLifeCertificate: State["exposureScaleZeroToOneLifeCertificate"];
61
+ };
@@ -1,5 +1,5 @@
1
1
  import getConfigCamera from "./getConfigCamera";
2
- import { randomHeartRate, filteredFingers } from "./utils";
2
+ import { randomHeartRate, filteredFingers, scale0to1, scale0to1Inverse } from "./utils";
3
3
  import { useIsForeground } from "./hooks/useIsForeground";
4
4
 
5
- export { getConfigCamera, useIsForeground, randomHeartRate, filteredFingers };
5
+ export { getConfigCamera, useIsForeground, randomHeartRate, filteredFingers, scale0to1, scale0to1Inverse };
@@ -11,4 +11,12 @@ const filteredFingers = (
11
11
  return items.filter((item) => !registeredFingers.includes(item.value));
12
12
  };
13
13
 
14
- export { randomHeartRate, filteredFingers };
14
+ const scale0to1 = (value: number, min: number, max: number) => {
15
+ return (value - min) / (max - min);
16
+ };
17
+
18
+ const scale0to1Inverse = (scaledValue: number, min: number, max: number) => {
19
+ return scaledValue * (max - min) + min;
20
+ };
21
+
22
+ export { randomHeartRate, filteredFingers, scale0to1, scale0to1Inverse };