@regulaforensics/react-native-document-reader-api 6.8.1 → 6.9.0
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/RNDocumentReaderApi.podspec +1 -1
- package/android/build.gradle +18 -1
- package/android/src/main/java/com/regula/documentreader/BluetoothUtil.kt +6 -6
- package/android/src/main/java/com/regula/documentreader/Helpers.java +117 -3
- package/android/src/main/java/com/regula/documentreader/JSONConstructor.java +182 -261
- package/android/src/main/java/com/regula/documentreader/RNRegulaDocumentReaderModule.java +142 -125
- package/android/src/main/java/com/regula/documentreader/RegulaConfig.java +114 -26
- package/example/.bundle/config +2 -0
- package/example/.eslintrc.js +1 -1
- package/example/.prettierrc.js +2 -2
- package/example/.watchmanconfig +1 -1
- package/example/App.tsx +358 -0
- package/example/Gemfile +6 -0
- package/example/Gemfile.lock +98 -0
- package/example/__tests__/{App-test.js → App.test.tsx} +3 -0
- package/example/android/app/build.gradle +77 -59
- package/example/android/app/src/debug/AndroidManifest.xml +1 -1
- package/example/android/app/src/debug/java/com/regula/dr/fullrfid/ReactNativeFlipper.java +7 -4
- package/example/android/app/src/main/AndroidManifest.xml +4 -9
- package/example/android/app/src/main/java/com/regula/dr/fullrfid/MainActivity.java +17 -0
- package/example/android/app/src/main/java/com/regula/dr/fullrfid/MainApplication.java +17 -36
- package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
- package/example/android/app/src/main/res/values/styles.xml +2 -2
- package/example/android/app/src/release/java/com/regula/dr/fullrfid/ReactNativeFlipper.java +20 -0
- package/example/android/build.gradle +7 -18
- package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/example/android/gradle/wrapper/gradle-wrapper.properties +2 -1
- package/example/android/gradle.properties +42 -2
- package/example/android/gradlew +164 -105
- package/example/android/gradlew.bat +92 -89
- package/example/android/settings.gradle +2 -1
- package/example/app.json +1 -1
- package/example/ios/.xcode.env +11 -0
- package/example/ios/DocumentReader/AppDelegate.h +2 -4
- package/example/ios/DocumentReader/AppDelegate.mm +26 -0
- package/example/ios/DocumentReader/DocumentReader.entitlements +0 -1
- package/example/ios/DocumentReader/Images.xcassets/AppIcon.appiconset/Contents.json +30 -15
- package/example/ios/DocumentReader/Info.plist +8 -4
- package/example/ios/DocumentReader/main.m +2 -1
- package/example/ios/DocumentReader.xcodeproj/project.pbxproj +134 -96
- package/example/ios/DocumentReaderTests/DocumentReaderTests.m +14 -13
- package/example/ios/Podfile +45 -15
- package/example/jest.config.js +3 -0
- package/example/metro.config.js +18 -15
- package/example/package-lock.json +13091 -0
- package/example/package.json +32 -22
- package/example/tsconfig.json +3 -0
- package/index.d.ts +426 -3015
- package/index.js +253 -2954
- package/ios/RGLWJSONConstructor.h +8 -6
- package/ios/RGLWJSONConstructor.m +109 -92
- package/ios/RGLWRegulaConfig.h +2 -1
- package/ios/RGLWRegulaConfig.m +139 -41
- package/ios/RNRegulaDocumentReader.m +55 -42
- package/package.json +1 -1
- package/example/.buckconfig +0 -6
- package/example/.editorconfig +0 -3
- package/example/.flowconfig +0 -65
- package/example/.gitattributes +0 -3
- package/example/App.js +0 -399
- package/example/android/app/BUCK +0 -55
- package/example/android/app/_BUCK +0 -55
- package/example/android/app/build_defs.bzl +0 -19
- package/example/android/app/src/main/assets/index.android.bundle +0 -636
- package/example/android/app/src/main/res/drawable-mdpi/images_id.png +0 -0
- package/example/android/app/src/main/res/drawable-mdpi/images_portrait.png +0 -0
- package/example/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecheckbox_img_ic_check_box.png +0 -0
- package/example/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecheckbox_img_ic_check_box_outline_blank.png +0 -0
- package/example/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecheckbox_img_ic_indeterminate_check_box.png +0 -0
- package/example/android/app/src/main/res/drawable-xhdpi/node_modules_reactnativecheckbox_img_ic_check_box.png +0 -0
- package/example/android/app/src/main/res/drawable-xhdpi/node_modules_reactnativecheckbox_img_ic_check_box_outline_blank.png +0 -0
- package/example/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnativecheckbox_img_ic_check_box.png +0 -0
- package/example/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnativecheckbox_img_ic_check_box_outline_blank.png +0 -0
- package/example/ios/DocumentReader/AppDelegate.m +0 -62
- package/example/ios/DocumentReader/Base.lproj/LaunchScreen.xib +0 -42
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
package com.regula.documentreader;
|
|
2
2
|
|
|
3
|
+
import static com.regula.documentreader.api.DocumentReader.Instance;
|
|
4
|
+
import static com.regula.documentreader.Helpers.*;
|
|
5
|
+
import static com.regula.documentreader.JSONConstructor.*;
|
|
6
|
+
|
|
3
7
|
import android.annotation.SuppressLint;
|
|
4
8
|
import android.app.Activity;
|
|
9
|
+
import android.app.LocaleManager;
|
|
5
10
|
import android.app.PendingIntent;
|
|
6
11
|
import android.content.Context;
|
|
7
12
|
import android.content.Intent;
|
|
@@ -12,9 +17,12 @@ import android.graphics.Bitmap;
|
|
|
12
17
|
import android.nfc.NfcAdapter;
|
|
13
18
|
import android.nfc.tech.IsoDep;
|
|
14
19
|
import android.os.Build;
|
|
15
|
-
import android.os.
|
|
20
|
+
import android.os.LocaleList;
|
|
16
21
|
import android.util.Base64;
|
|
17
22
|
|
|
23
|
+
import androidx.annotation.NonNull;
|
|
24
|
+
import androidx.annotation.Nullable;
|
|
25
|
+
|
|
18
26
|
import com.facebook.react.bridge.ActivityEventListener;
|
|
19
27
|
import com.facebook.react.bridge.Arguments;
|
|
20
28
|
import com.facebook.react.bridge.LifecycleEventListener;
|
|
@@ -29,55 +37,56 @@ import com.regula.documentreader.api.completions.ICheckDatabaseUpdate;
|
|
|
29
37
|
import com.regula.documentreader.api.completions.IDocumentReaderCompletion;
|
|
30
38
|
import com.regula.documentreader.api.completions.IDocumentReaderInitCompletion;
|
|
31
39
|
import com.regula.documentreader.api.completions.IDocumentReaderPrepareCompletion;
|
|
32
|
-
import com.regula.documentreader.api.completions.IRfidPKDCertificateCompletion;
|
|
33
|
-
import com.regula.documentreader.api.completions.
|
|
34
|
-
import com.regula.documentreader.api.completions.
|
|
35
|
-
import com.regula.documentreader.api.completions.
|
|
40
|
+
import com.regula.documentreader.api.completions.rfid.IRfidPKDCertificateCompletion;
|
|
41
|
+
import com.regula.documentreader.api.completions.rfid.IRfidReaderCompletion;
|
|
42
|
+
import com.regula.documentreader.api.completions.rfid.IRfidReaderRequest;
|
|
43
|
+
import com.regula.documentreader.api.completions.rfid.IRfidTASignatureCompletion;
|
|
44
|
+
import com.regula.documentreader.api.completions.rfid.ITccParamsCompletion;
|
|
36
45
|
import com.regula.documentreader.api.enums.DocReaderAction;
|
|
46
|
+
import com.regula.documentreader.api.errors.DocReaderRfidException;
|
|
37
47
|
import com.regula.documentreader.api.errors.DocumentReaderException;
|
|
38
48
|
import com.regula.documentreader.api.internal.core.CoreScenarioUtil;
|
|
49
|
+
import com.regula.documentreader.api.internal.params.ImageInputParam;
|
|
50
|
+
import com.regula.documentreader.api.internal.parser.DocReaderResultsJsonParser;
|
|
39
51
|
import com.regula.documentreader.api.params.BleDeviceConfig;
|
|
40
52
|
import com.regula.documentreader.api.params.DocReaderConfig;
|
|
41
53
|
import com.regula.documentreader.api.params.ImageInputData;
|
|
42
|
-
import com.regula.documentreader.api.internal.params.ImageInputParam;
|
|
43
54
|
import com.regula.documentreader.api.params.rfid.PKDCertificate;
|
|
44
55
|
import com.regula.documentreader.api.params.rfid.authorization.PAResourcesIssuer;
|
|
45
56
|
import com.regula.documentreader.api.params.rfid.authorization.TAChallenge;
|
|
46
57
|
import com.regula.documentreader.api.results.DocumentReaderGraphicField;
|
|
58
|
+
import com.regula.documentreader.api.results.DocumentReaderNotification;
|
|
47
59
|
import com.regula.documentreader.api.results.DocumentReaderResults;
|
|
48
60
|
import com.regula.documentreader.api.results.DocumentReaderTextField;
|
|
49
|
-
import com.regula.documentreader.api.internal.parser.DocReaderResultsJsonParser;
|
|
50
61
|
|
|
51
62
|
import org.json.JSONArray;
|
|
52
63
|
import org.json.JSONException;
|
|
53
64
|
import org.json.JSONObject;
|
|
54
65
|
|
|
55
|
-
import java.io.File;
|
|
56
66
|
import java.io.IOException;
|
|
57
67
|
import java.io.InputStream;
|
|
58
68
|
import java.util.ArrayList;
|
|
59
69
|
import java.util.List;
|
|
60
70
|
import java.util.Locale;
|
|
61
71
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
import androidx.annotation.NonNull;
|
|
65
|
-
|
|
66
|
-
@SuppressWarnings({"ConstantConditions", "RedundantSuppression", "MissingPermission"})
|
|
72
|
+
@SuppressWarnings({"ConstantConditions", "RedundantSuppression", "MissingPermission", "deprecation"})
|
|
67
73
|
public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule implements ActivityEventListener, LifecycleEventListener {
|
|
68
|
-
private final static String
|
|
69
|
-
private final static String
|
|
70
|
-
|
|
71
|
-
private final static String
|
|
74
|
+
private final static String eventDatabaseProgress = "prepareDatabaseProgressChangeEvent";
|
|
75
|
+
private final static String eventCompletion = "completionEvent";
|
|
76
|
+
|
|
77
|
+
private final static String rfidOnProgressEvent = "rfidNotificationCompletionEvent";
|
|
78
|
+
private final static String rfidOnChipDetectedEvent = "rfidOnChipDetectedEvent";
|
|
79
|
+
private final static String rfidOnRetryReadChipEvent = "rfidOnRetryReadChipEvent";
|
|
72
80
|
|
|
73
|
-
private final static String
|
|
74
|
-
private final static String
|
|
75
|
-
private final static String
|
|
81
|
+
private final static String eventPACertificateCompletion = "paCertificateCompletionEvent";
|
|
82
|
+
private final static String eventTACertificateCompletion = "taCertificateCompletionEvent";
|
|
83
|
+
private final static String eventTASignatureCompletion = "taSignatureCompletionEvent";
|
|
76
84
|
|
|
77
85
|
private final static String bleOnServiceConnectedEvent = "bleOnServiceConnectedEvent";
|
|
78
86
|
private final static String bleOnServiceDisconnectedEvent = "bleOnServiceDisconnectedEvent";
|
|
79
87
|
private final static String bleOnDeviceReadyEvent = "bleOnDeviceReadyEvent";
|
|
80
88
|
|
|
89
|
+
private final static String eventVideoEncoderCompletion = "videoEncoderCompletionEvent";
|
|
81
90
|
private final static String onCustomButtonTappedEvent = "onCustomButtonTappedEvent";
|
|
82
91
|
|
|
83
92
|
private static int databaseDownloadProgress = 0;
|
|
@@ -101,6 +110,17 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
101
110
|
return "RNRegulaDocumentReader";
|
|
102
111
|
}
|
|
103
112
|
|
|
113
|
+
@ReactMethod
|
|
114
|
+
@SuppressWarnings("unused")
|
|
115
|
+
public void addListener(String eventName) {
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@ReactMethod
|
|
119
|
+
@SuppressWarnings("unused")
|
|
120
|
+
public void removeListeners(Integer count) {
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
|
|
104
124
|
private Context getContext() {
|
|
105
125
|
return reactContext.getCurrentActivity();
|
|
106
126
|
}
|
|
@@ -116,7 +136,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
116
136
|
@Override
|
|
117
137
|
public void onNewIntent(Intent intent) {
|
|
118
138
|
if (intent.getAction() != null && intent.getAction().equals(NfcAdapter.ACTION_TECH_DISCOVERED) && backgroundRFIDEnabled)
|
|
119
|
-
Instance().readRFID(IsoDep.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)),
|
|
139
|
+
Instance().readRFID(IsoDep.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)), getRfidReaderCompletion());
|
|
120
140
|
}
|
|
121
141
|
|
|
122
142
|
@Override
|
|
@@ -150,56 +170,17 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
150
170
|
return (T) data.get(index);
|
|
151
171
|
}
|
|
152
172
|
|
|
153
|
-
|
|
173
|
+
private void sendEvent(String event, Object data) {
|
|
154
174
|
WritableMap map = Arguments.createMap();
|
|
155
|
-
|
|
175
|
+
String result;
|
|
176
|
+
if (data instanceof JSONObject || data instanceof JSONArray)
|
|
177
|
+
result = data.toString();
|
|
178
|
+
else
|
|
179
|
+
result = (String) data;
|
|
180
|
+
map.putString("msg", result);
|
|
156
181
|
reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(event, map);
|
|
157
182
|
}
|
|
158
183
|
|
|
159
|
-
private void sendProgress(int progress) {
|
|
160
|
-
send(reactContext, prepareDatabaseProgressChangeEvent, progress + "");
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
private void sendCompletion(int action, DocumentReaderResults results, DocumentReaderException error) {
|
|
164
|
-
send(reactContext, completionEvent, JSONConstructor.generateCompletion(action, results, error, getContext()).toString());
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
private void sendVideoEncoderCompletion(String sessionId, File file) {
|
|
168
|
-
send(reactContext, videoEncoderCompletionEvent, JSONConstructor.generateVideoEncoderCompletion(sessionId, file).toString());
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
private void sendIRfidNotificationCompletion(int notification, Bundle value) {
|
|
172
|
-
send(reactContext, rfidNotificationCompletionEvent, JSONConstructor.generateRfidNotificationCompletion(notification, value).toString());
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
private void sendPACertificateCompletion(byte[] serialNumber, PAResourcesIssuer issuer) {
|
|
176
|
-
send(reactContext, paCertificateCompletionEvent, JSONConstructor.generatePACertificateCompletion(serialNumber, issuer).toString());
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
private void sendTACertificateCompletion(String keyCAR) {
|
|
180
|
-
send(reactContext, taCertificateCompletionEvent, keyCAR);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
private void sendTASignatureCompletion(TAChallenge challenge) {
|
|
184
|
-
send(reactContext, taSignatureCompletionEvent, JSONConstructor.generateTAChallenge(challenge).toString());
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
private void sendBleOnServiceConnectedEvent(boolean isBleManagerConnected) {
|
|
188
|
-
send(reactContext, bleOnServiceConnectedEvent, isBleManagerConnected +"");
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
private void sendBleOnServiceDisconnectedEvent() {
|
|
192
|
-
send(reactContext, bleOnServiceDisconnectedEvent, "");
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
private void sendBleOnDeviceReadyEvent() {
|
|
196
|
-
send(reactContext, bleOnDeviceReadyEvent, "");
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
private void sendOnCustomButtonTappedEvent(int tag) {
|
|
200
|
-
send(reactContext, onCustomButtonTappedEvent, tag + "");
|
|
201
|
-
}
|
|
202
|
-
|
|
203
184
|
private interface Callback {
|
|
204
185
|
void success(Object o);
|
|
205
186
|
|
|
@@ -373,8 +354,11 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
373
354
|
case "checkDatabaseUpdate":
|
|
374
355
|
checkDatabaseUpdate(callback, args(0));
|
|
375
356
|
break;
|
|
376
|
-
case "
|
|
377
|
-
|
|
357
|
+
case "scan":
|
|
358
|
+
scan(callback, args(0));
|
|
359
|
+
break;
|
|
360
|
+
case "recognize":
|
|
361
|
+
recognize(callback, args(0));
|
|
378
362
|
break;
|
|
379
363
|
case "recognizeImages":
|
|
380
364
|
recognizeImages(callback, args(0));
|
|
@@ -436,9 +420,6 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
436
420
|
case "recognizeImagesWithImageInputs":
|
|
437
421
|
recognizeImagesWithImageInputs(callback, args(0));
|
|
438
422
|
break;
|
|
439
|
-
case "setOnCustomButtonTappedListener":
|
|
440
|
-
setOnCustomButtonTappedListener(callback);
|
|
441
|
-
break;
|
|
442
423
|
case "setLanguage":
|
|
443
424
|
setLanguage(callback, args(0));
|
|
444
425
|
break;
|
|
@@ -545,15 +526,15 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
545
526
|
BluetoothUtil.Companion.startBluetoothService(
|
|
546
527
|
getActivity(),
|
|
547
528
|
isBleManagerConnected -> {
|
|
548
|
-
|
|
529
|
+
sendEvent(bleOnServiceConnectedEvent, isBleManagerConnected);
|
|
549
530
|
return null;
|
|
550
531
|
},
|
|
551
532
|
() -> {
|
|
552
|
-
|
|
533
|
+
sendEvent(bleOnServiceDisconnectedEvent, "");
|
|
553
534
|
return null;
|
|
554
535
|
},
|
|
555
536
|
() -> {
|
|
556
|
-
|
|
537
|
+
sendEvent(bleOnDeviceReadyEvent, "");
|
|
557
538
|
return null;
|
|
558
539
|
}
|
|
559
540
|
);
|
|
@@ -570,12 +551,12 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
570
551
|
}
|
|
571
552
|
|
|
572
553
|
private void getAvailableScenarios(Callback callback) throws JSONException {
|
|
573
|
-
callback.success(
|
|
554
|
+
callback.success(generateList(Instance().availableScenarios, JSONConstructor::generateDocumentReaderScenario).toString());
|
|
574
555
|
}
|
|
575
556
|
|
|
576
557
|
private void parseCoreResults(Callback callback, String json) {
|
|
577
558
|
DocumentReaderResults results = (DocumentReaderResults) DocReaderResultsJsonParser.parseCoreResults(json).get("docReaderResults");
|
|
578
|
-
callback.success(
|
|
559
|
+
callback.success(generateDocumentReaderResults(results, getContext()).toString());
|
|
579
560
|
}
|
|
580
561
|
|
|
581
562
|
private void getAPIVersion(Callback callback) {
|
|
@@ -615,7 +596,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
615
596
|
}
|
|
616
597
|
|
|
617
598
|
private void setTCCParams(Callback callback, final JSONObject params) {
|
|
618
|
-
Instance().setTccParams(
|
|
599
|
+
Instance().setTccParams(TCCParamsFromJSON(params), getTCCParamsCompletion(callback));
|
|
619
600
|
}
|
|
620
601
|
|
|
621
602
|
private void deinitializeReader(Callback callback) {
|
|
@@ -636,11 +617,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
636
617
|
}
|
|
637
618
|
|
|
638
619
|
private void selectedScenario(Callback callback) {
|
|
639
|
-
callback.success(
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
private void getScenario(Callback callback, String scenario) {
|
|
643
|
-
callback.success(JSONConstructor.generateCoreDetailedScenario(CoreScenarioUtil.getScenario(scenario)).toString());
|
|
620
|
+
callback.success(generateDocumentReaderScenario(CoreScenarioUtil.getScenario(Instance().processParams().getScenario())).toString());
|
|
644
621
|
}
|
|
645
622
|
|
|
646
623
|
private void getLicenseExpiryDate(Callback callback) {
|
|
@@ -654,7 +631,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
654
631
|
if (Instance().license().getCountryFilter() == null)
|
|
655
632
|
callback.error("null");
|
|
656
633
|
else
|
|
657
|
-
callback.success(
|
|
634
|
+
callback.success(generateList(Instance().license().getCountryFilter()).toString());
|
|
658
635
|
}
|
|
659
636
|
|
|
660
637
|
private void licenseIsRfidAvailable(Callback callback) {
|
|
@@ -675,7 +652,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
675
652
|
|
|
676
653
|
private void initializeReader(Callback callback, JSONObject config) {
|
|
677
654
|
if (!Instance().isReady())
|
|
678
|
-
Instance().initializeReader(getContext(),
|
|
655
|
+
Instance().initializeReader(getContext(), DocReaderConfigFromJSON(config), getInitCompletion(callback));
|
|
679
656
|
else
|
|
680
657
|
callback.success("already initialized");
|
|
681
658
|
}
|
|
@@ -704,6 +681,16 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
704
681
|
callback.success();
|
|
705
682
|
}
|
|
706
683
|
|
|
684
|
+
private void scan(@SuppressWarnings("unused") Callback callback, JSONObject config) {
|
|
685
|
+
stopBackgroundRFID();
|
|
686
|
+
Instance().showScanner(getContext(), ScannerConfigFromJSON(config), getCompletion());
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
private void recognize(@SuppressWarnings("unused") Callback callback, JSONObject config) {
|
|
690
|
+
stopBackgroundRFID();
|
|
691
|
+
Instance().recognize(getContext(), RecognizeConfigFromJSON(config), getCompletion());
|
|
692
|
+
}
|
|
693
|
+
|
|
707
694
|
private void recognizeImageWithOpts(Callback callback, String base64Image, final JSONObject opts) throws JSONException {
|
|
708
695
|
RegulaConfig.setConfig(Instance(), opts, getContext());
|
|
709
696
|
recognizeImage(callback, base64Image);
|
|
@@ -723,7 +710,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
723
710
|
stopBackgroundRFID();
|
|
724
711
|
Bitmap[] images = new Bitmap[base64Images.length()];
|
|
725
712
|
for (int i = 0; i < images.length; i++)
|
|
726
|
-
images[i] =
|
|
713
|
+
images[i] = bitmapFromBase64(base64Images.getString(i));
|
|
727
714
|
Instance().recognizeImages(images, getCompletion());
|
|
728
715
|
}
|
|
729
716
|
|
|
@@ -731,7 +718,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
731
718
|
stopBackgroundRFID();
|
|
732
719
|
ImageInputData[] images = new ImageInputData[base64Images.length()];
|
|
733
720
|
for (int i = 0; i < images.length; i++)
|
|
734
|
-
images[i] =
|
|
721
|
+
images[i] = ImageInputDataFromJSON(base64Images.getJSONObject(i));
|
|
735
722
|
Instance().recognizeImages(images, getCompletion());
|
|
736
723
|
}
|
|
737
724
|
|
|
@@ -795,12 +782,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
795
782
|
|
|
796
783
|
private void startRFIDReader(@SuppressWarnings("unused") Callback callback) {
|
|
797
784
|
stopBackgroundRFID();
|
|
798
|
-
|
|
799
|
-
if (rfidDelegate == RFIDDelegate.NO_PA)
|
|
800
|
-
delegate = getIRfidReaderRequestNoPA();
|
|
801
|
-
if (rfidDelegate == RFIDDelegate.FULL)
|
|
802
|
-
delegate = getIRfidReaderRequest();
|
|
803
|
-
Instance().startRFIDReader(getContext(), getCompletion(), delegate, this::sendIRfidNotificationCompletion);
|
|
785
|
+
Instance().startRFIDReader(getContext(), getRfidReaderCompletion(), getRfidReaderRequest());
|
|
804
786
|
}
|
|
805
787
|
|
|
806
788
|
private void stopRFIDReader(Callback callback) {
|
|
@@ -836,18 +818,18 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
836
818
|
startForegroundDispatch(getActivity());
|
|
837
819
|
}
|
|
838
820
|
|
|
839
|
-
private void setOnCustomButtonTappedListener(Callback callback) {
|
|
840
|
-
Instance().setOnClickListener(view -> sendOnCustomButtonTappedEvent((int) view.getTag()));
|
|
841
|
-
callback.success();
|
|
842
|
-
}
|
|
843
|
-
|
|
844
821
|
private void setLanguage(Callback callback, String language) {
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
822
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
823
|
+
LocaleManager localeManager = (LocaleManager) getContext().getSystemService(Context.LOCALE_SERVICE);
|
|
824
|
+
localeManager.setApplicationLocales(new LocaleList(Locale.forLanguageTag(language)));
|
|
825
|
+
} else {
|
|
826
|
+
Locale locale = new Locale(language);
|
|
827
|
+
Locale.setDefault(locale);
|
|
828
|
+
Resources resources = getContext().getResources();
|
|
829
|
+
Configuration config = resources.getConfiguration();
|
|
830
|
+
config.setLocale(locale);
|
|
831
|
+
resources.updateConfiguration(config, resources.getDisplayMetrics());
|
|
832
|
+
}
|
|
851
833
|
callback.success();
|
|
852
834
|
}
|
|
853
835
|
|
|
@@ -929,7 +911,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
929
911
|
if (result == null)
|
|
930
912
|
callback.success(null);
|
|
931
913
|
else
|
|
932
|
-
callback.success(
|
|
914
|
+
callback.success(generateDocumentReaderTextField(result, getContext()).toString());
|
|
933
915
|
}
|
|
934
916
|
|
|
935
917
|
private void textFieldByTypeLcid(Callback callback, String raw, int fieldType, int lcid) {
|
|
@@ -938,7 +920,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
938
920
|
if (result == null)
|
|
939
921
|
callback.success(null);
|
|
940
922
|
else
|
|
941
|
-
callback.success(
|
|
923
|
+
callback.success(generateDocumentReaderTextField(result, getContext()).toString());
|
|
942
924
|
}
|
|
943
925
|
|
|
944
926
|
private void graphicFieldByTypeSource(Callback callback, String raw, int fieldType, int source) {
|
|
@@ -947,7 +929,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
947
929
|
if (result == null)
|
|
948
930
|
callback.success(null);
|
|
949
931
|
else
|
|
950
|
-
callback.success(
|
|
932
|
+
callback.success(generateDocumentReaderGraphicField(result, getContext()).toString());
|
|
951
933
|
}
|
|
952
934
|
|
|
953
935
|
private void graphicFieldByTypeSourcePageIndex(Callback callback, String raw, int fieldType, int source, int pageIndex) {
|
|
@@ -956,7 +938,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
956
938
|
if (result == null)
|
|
957
939
|
callback.success(null);
|
|
958
940
|
else
|
|
959
|
-
callback.success(
|
|
941
|
+
callback.success(generateDocumentReaderGraphicField(result, getContext()).toString());
|
|
960
942
|
}
|
|
961
943
|
|
|
962
944
|
private void graphicFieldByTypeSourcePageIndexLight(Callback callback, String raw, int fieldType, int source, int pageIndex, int light) {
|
|
@@ -965,34 +947,34 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
965
947
|
if (result == null)
|
|
966
948
|
callback.success(null);
|
|
967
949
|
else
|
|
968
|
-
callback.success(
|
|
950
|
+
callback.success(generateDocumentReaderGraphicField(result, getContext()).toString());
|
|
969
951
|
}
|
|
970
952
|
|
|
971
953
|
private void graphicFieldImageByType(Callback callback, String raw, int fieldType) {
|
|
972
954
|
DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
|
|
973
|
-
callback.success(
|
|
955
|
+
callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType)));
|
|
974
956
|
}
|
|
975
957
|
|
|
976
958
|
private void graphicFieldImageByTypeSource(Callback callback, String raw, int fieldType, int source) {
|
|
977
959
|
DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
|
|
978
|
-
callback.success(
|
|
960
|
+
callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType, source)));
|
|
979
961
|
}
|
|
980
962
|
|
|
981
963
|
private void graphicFieldImageByTypeSourcePageIndex(Callback callback, String raw, int fieldType, int source, int pageIndex) {
|
|
982
964
|
DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
|
|
983
|
-
callback.success(
|
|
965
|
+
callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType, source, pageIndex)));
|
|
984
966
|
}
|
|
985
967
|
|
|
986
968
|
private void graphicFieldImageByTypeSourcePageIndexLight(Callback callback, String raw, int fieldType, int source, int pageIndex, int light) {
|
|
987
969
|
DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
|
|
988
|
-
callback.success(
|
|
970
|
+
callback.success(bitmapToBase64String(results.getGraphicFieldImageByType(fieldType, source, pageIndex, light)));
|
|
989
971
|
}
|
|
990
972
|
|
|
991
973
|
@SuppressLint("WrongConstant")
|
|
992
974
|
private void containers(Callback callback, String raw, JSONArray resultType) {
|
|
993
975
|
try {
|
|
994
976
|
DocumentReaderResults results = DocumentReaderResults.fromRawResults(raw);
|
|
995
|
-
callback.success(results.getContainers(
|
|
977
|
+
callback.success(results.getContainers(intArrayFromJSON(resultType)));
|
|
996
978
|
} catch (JSONException e) {
|
|
997
979
|
e.printStackTrace();
|
|
998
980
|
callback.error(e.toString());
|
|
@@ -1032,24 +1014,50 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
1032
1014
|
|
|
1033
1015
|
private IDocumentReaderCompletion getCompletion() {
|
|
1034
1016
|
return (action, results, error) -> {
|
|
1035
|
-
|
|
1017
|
+
sendEvent(eventCompletion, generateCompletion(action, results, error, getContext()));
|
|
1036
1018
|
if (action == DocReaderAction.ERROR || action == DocReaderAction.CANCEL || (action == DocReaderAction.COMPLETE && results != null && results.rfidResult == 1))
|
|
1037
1019
|
stopBackgroundRFID();
|
|
1038
1020
|
};
|
|
1039
1021
|
}
|
|
1040
1022
|
|
|
1023
|
+
private IRfidReaderCompletion getRfidReaderCompletion() {
|
|
1024
|
+
return new IRfidReaderCompletion() {
|
|
1025
|
+
@Override
|
|
1026
|
+
public void onCompleted(int action, @Nullable DocumentReaderResults results, @Nullable DocumentReaderException error) {
|
|
1027
|
+
sendEvent(eventCompletion, generateCompletion(action, results, error, getContext()));
|
|
1028
|
+
if (action == DocReaderAction.ERROR || action == DocReaderAction.CANCEL || (action == DocReaderAction.COMPLETE && results != null && results.rfidResult == 1))
|
|
1029
|
+
stopBackgroundRFID();
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
@Override
|
|
1033
|
+
public void onChipDetected() {
|
|
1034
|
+
sendEvent(rfidOnChipDetectedEvent, "");
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
@Override
|
|
1038
|
+
public void onRetryReadChip(@NonNull DocReaderRfidException error) {
|
|
1039
|
+
sendEvent(rfidOnRetryReadChipEvent, generateRegulaException(error));
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
@Override
|
|
1043
|
+
public void onProgress(@Nullable DocumentReaderNotification notification) {
|
|
1044
|
+
sendEvent(rfidOnProgressEvent, generateDocumentReaderNotification(notification));
|
|
1045
|
+
}
|
|
1046
|
+
};
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1041
1049
|
private IDocumentReaderPrepareCompletion getPrepareCompletion(Callback callback) {
|
|
1042
1050
|
return new IDocumentReaderPrepareCompletion() {
|
|
1043
1051
|
@Override
|
|
1044
1052
|
public void onPrepareProgressChanged(int progress) {
|
|
1045
1053
|
if (progress != databaseDownloadProgress) {
|
|
1046
|
-
|
|
1054
|
+
sendEvent(eventDatabaseProgress, progress + "");
|
|
1047
1055
|
databaseDownloadProgress = progress;
|
|
1048
1056
|
}
|
|
1049
1057
|
}
|
|
1050
1058
|
|
|
1051
1059
|
@Override
|
|
1052
|
-
public void onPrepareCompleted(boolean status, DocumentReaderException error) {
|
|
1060
|
+
public void onPrepareCompleted(boolean status, @Nullable DocumentReaderException error) {
|
|
1053
1061
|
if (status)
|
|
1054
1062
|
callback.success("database prepared");
|
|
1055
1063
|
else
|
|
@@ -1061,7 +1069,8 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
1061
1069
|
private IDocumentReaderInitCompletion getInitCompletion(Callback callback) {
|
|
1062
1070
|
return (success, error) -> {
|
|
1063
1071
|
if (success) {
|
|
1064
|
-
Instance().setVideoEncoderCompletion(
|
|
1072
|
+
Instance().setVideoEncoderCompletion((sessionId, file) -> sendEvent(eventVideoEncoderCompletion, generateVideoEncoderCompletion(sessionId, file)));
|
|
1073
|
+
Instance().setOnClickListener(view -> sendEvent(onCustomButtonTappedEvent, view.getTag()));
|
|
1065
1074
|
callback.success("init completed");
|
|
1066
1075
|
} else
|
|
1067
1076
|
callback.error("Init failed:" + error);
|
|
@@ -1069,7 +1078,7 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
1069
1078
|
}
|
|
1070
1079
|
|
|
1071
1080
|
private ICheckDatabaseUpdate getCheckDatabaseUpdateCompletion(Callback callback) {
|
|
1072
|
-
return (database) -> callback.success(
|
|
1081
|
+
return (database) -> callback.success(generateDocReaderDocumentsDatabase(database));
|
|
1073
1082
|
}
|
|
1074
1083
|
|
|
1075
1084
|
private ITccParamsCompletion getTCCParamsCompletion(Callback callback) {
|
|
@@ -1086,20 +1095,19 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
1086
1095
|
@Override
|
|
1087
1096
|
public void onRequestPACertificates(byte[] serialNumber, PAResourcesIssuer issuer, @NonNull IRfidPKDCertificateCompletion completion) {
|
|
1088
1097
|
paCertificateCompletion = completion;
|
|
1089
|
-
|
|
1090
|
-
sendPACertificateCompletion(serialNumber, issuer);
|
|
1098
|
+
sendEvent(eventPACertificateCompletion, generatePACertificateCompletion(serialNumber, issuer));
|
|
1091
1099
|
}
|
|
1092
1100
|
|
|
1093
1101
|
@Override
|
|
1094
1102
|
public void onRequestTACertificates(String keyCAR, @NonNull IRfidPKDCertificateCompletion completion) {
|
|
1095
1103
|
taCertificateCompletion = completion;
|
|
1096
|
-
|
|
1104
|
+
sendEvent(eventTACertificateCompletion, keyCAR);
|
|
1097
1105
|
}
|
|
1098
1106
|
|
|
1099
1107
|
@Override
|
|
1100
1108
|
public void onRequestTASignature(TAChallenge challenge, @NonNull IRfidTASignatureCompletion completion) {
|
|
1101
1109
|
taSignatureCompletion = completion;
|
|
1102
|
-
|
|
1110
|
+
sendEvent(eventTASignatureCompletion, generateTAChallenge(challenge));
|
|
1103
1111
|
}
|
|
1104
1112
|
};
|
|
1105
1113
|
}
|
|
@@ -1115,17 +1123,26 @@ public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule imp
|
|
|
1115
1123
|
@Override
|
|
1116
1124
|
public void onRequestTACertificates(String keyCAR, @NonNull IRfidPKDCertificateCompletion completion) {
|
|
1117
1125
|
taCertificateCompletion = completion;
|
|
1118
|
-
|
|
1126
|
+
sendEvent(eventTACertificateCompletion, keyCAR);
|
|
1119
1127
|
}
|
|
1120
1128
|
|
|
1121
1129
|
@Override
|
|
1122
1130
|
public void onRequestTASignature(TAChallenge challenge, @NonNull IRfidTASignatureCompletion completion) {
|
|
1123
1131
|
taSignatureCompletion = completion;
|
|
1124
|
-
|
|
1132
|
+
sendEvent(eventTASignatureCompletion, generateTAChallenge(challenge));
|
|
1125
1133
|
}
|
|
1126
1134
|
};
|
|
1127
1135
|
}
|
|
1128
1136
|
|
|
1137
|
+
private IRfidReaderRequest getRfidReaderRequest() {
|
|
1138
|
+
IRfidReaderRequest delegate = null;
|
|
1139
|
+
if (rfidDelegate == RFIDDelegate.NO_PA)
|
|
1140
|
+
delegate = getIRfidReaderRequestNoPA();
|
|
1141
|
+
if (rfidDelegate == RFIDDelegate.FULL)
|
|
1142
|
+
delegate = getIRfidReaderRequest();
|
|
1143
|
+
return delegate;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1129
1146
|
private static int rfidDelegate = RFIDDelegate.NULL;
|
|
1130
1147
|
|
|
1131
1148
|
private static class RFIDDelegate {
|