Skip to content

Commit a2265f9

Browse files
Release 53.0.0 (#177)
* Release 53.0.0
1 parent 8c9ccc1 commit a2265f9

16 files changed

+144
-136
lines changed

example/RNExampleApp/android/app/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ android {
8787
minSdkVersion rootProject.ext.minSdkVersion
8888
targetSdkVersion rootProject.ext.targetSdkVersion
8989
versionCode 5
90-
versionName "52.0.1"
90+
versionName "53.0.0"
9191
multiDexEnabled true
9292

9393
buildConfigField("boolean", "REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS", (findProperty("reactNative.unstable_useRuntimeSchedulerAlways") ?: true).toString())

example/RNExampleApp/config/OdometerConfig.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ export default {
3838
}
3939
},
4040
"scanFeedbackConfig" : {
41-
"style" : "CONTOUR_RECT",
41+
"style" : "contour_rect",
4242
"strokeColor" : "0099FF",
4343
"fillColor" : "220099FF",
44-
"blinkOnResult": true,
44+
"blinkAnimationOnResult": true,
4545
"beepOnResult": true,
4646
"vibrateOnResult": true
4747
}

example/RNExampleApp/config/SerialScanningConfig.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ export default {
113113
"feedbackStrokeColor": "0099FF"
114114
},
115115
"scanFeedbackConfig": {
116-
"style": "CONTOUR_RECT",
117-
"visualFeedbackRedrawTimeout": 100,
116+
"style": "contour_rect",
117+
"redrawTimeout": 100,
118118
"strokeColor": "0099FF",
119119
"fillColor": "220099FF",
120120
"beepOnResult": true,

example/RNExampleApp/config/TINDOTConfig.js

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export default {
2-
license: '', //INSERT YOUR LICENSE KEY HERE
32
"options": {
43
"doneButtonConfig": {
54
"offset.y": -88

example/RNExampleApp/config/UniversalIdConfig.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ export default {
138138
"feedbackStrokeColor": "0099FF"
139139
},
140140
"scanFeedbackConfig": {
141-
"style": "CONTOUR_RECT",
142-
"visualFeedbackRedrawTimeout": 100,
141+
"style": "contour_rect",
142+
"redrawTimeout": 100,
143143
"strokeColor": "0099FF",
144144
"fillColor": "220099FF",
145145
"beepOnResult": true,

example/RNExampleApp/ios/RNExampleApp.xcodeproj/project.pbxproj

+38-56
Large diffs are not rendered by default.

example/RNExampleApp/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-example-app",
3-
"version": "52.0.1",
3+
"version": "53.0.0",
44
"private": true,
55
"scripts": {
66
"initProject": "yarn add expo && yarn add ../../plugin",

plugin/android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ repositories {
6161

6262
dependencies {
6363
implementation fileTree(dir: "libs", include: ["*.jar"])
64-
implementation 'io.anyline:anylinesdk:52.0.1'
64+
implementation 'io.anyline:anylinesdk:53.0.0'
6565
implementation "com.facebook.react:react-native:+"
6666
implementation("com.google.android.material:material:1.9.0")
6767
implementation 'androidx.multidex:multidex:2.0.1'

plugin/android/src/main/java/com/anyline/reactnative/ScanActivity.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
124124
};
125125
} catch (JSONException e) {
126126
finishWithError("Error parsing view config: " + e.getMessage());
127+
} catch (Exception e) {
128+
finishWithError(getString(getResources().getIdentifier("error_invalid_json_data", "string", getPackageName()))
129+
+ "\n" + e.getLocalizedMessage());
127130
}
128131
} else {
129132
finishWithError("View config not found");
@@ -370,6 +373,7 @@ private void finishWithError(String errorMessage) {
370373
Intent intent = new Intent();
371374
intent.putExtra(EXTRA_ERROR_MESSAGE, errorMessage);
372375
setResult(RESULT_ERROR, intent);
376+
ResultReporter.onError(errorMessage);
373377
finish();
374378
}
375379

@@ -382,13 +386,17 @@ protected void onSaveInstanceState(Bundle outState) {
382386
@Override
383387
protected void onResume() {
384388
super.onResume();
385-
scanView.start();
389+
if (scanView.isInitialized()) {
390+
scanView.start();
391+
}
386392
}
387393

388394
@Override
389395
protected void onPause() {
390-
scanView.stop();
391-
scanView.getCameraView().releaseCameraInBackground();
396+
if (scanView.isInitialized()) {
397+
scanView.stop();
398+
scanView.getCameraView().releaseCameraInBackground();
399+
}
392400
super.onPause();
393401
}
394402

plugin/ios/ALNFCScanViewController.m

+7-9
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ - (void)viewDidLoad {
109109
return;
110110
}
111111

112-
self.mrzScanViewPlugin = (ALScanViewPlugin *)self.scanView.scanViewPlugin;
112+
self.mrzScanViewPlugin = (ALScanViewPlugin *)self.scanView.viewPlugin;
113113

114114
self.scanView.supportedNativeBarcodeFormats = self.uiConfig.nativeBarcodeFormats;
115115
self.scanView.delegate = self;
@@ -155,7 +155,7 @@ - (void)stopMRZScanning {
155155

156156
- (void)configureMRZPlugin {
157157

158-
ALScanViewPlugin *scanViewPlugin = (ALScanViewPlugin *)self.scanView.scanViewPlugin;
158+
ALScanViewPlugin *scanViewPlugin = (ALScanViewPlugin *)self.scanView.viewPlugin;
159159
if (![scanViewPlugin isKindOfClass:ALScanViewPlugin.class]) {
160160
return;
161161
}
@@ -183,14 +183,12 @@ - (void)configureMRZPlugin {
183183
mrzConfig.mrzMinFieldConfidences.dateOfExpiry = @(90);
184184

185185
NSError *error;
186-
ALScanViewPluginConfig *scanViewPluginConfig = [ALScanViewPluginConfig withPluginConfig:pluginConfig
187-
cutoutConfig:cutoutConfig
188-
scanFeedbackConfig:scanFeedbackConfig];
189-
ALScanViewPlugin *updatedScanViewPlugin = [[ALScanViewPlugin alloc] initWithConfig:scanViewPluginConfig error:&error];
190-
[self.scanView setScanViewPlugin:updatedScanViewPlugin error:&error];
186+
187+
ALViewPluginConfig *scanViewPluginConfig = scanViewPlugin.scanViewPluginConfig;
188+
[self.scanView setViewPluginConfig:scanViewPluginConfig error:&error];
191189

192190
// the delegate binding was lost when you recreated the ScanPlugin it so you have to bring it back here
193-
scanViewPlugin = (ALScanViewPlugin *)self.scanView.scanViewPlugin;
191+
scanViewPlugin = (ALScanViewPlugin *)self.scanView.viewPlugin;
194192
scanViewPlugin.scanPlugin.delegate = self;
195193
}
196194

@@ -243,7 +241,7 @@ - (void)handleResult:(id _Nullable)resultObj {
243241
resultDictionary[@"nativeBarcodesDetected"] = self.detectedBarcodes;
244242
}
245243

246-
NSObject<ALScanViewPluginBase> *scanViewPluginBase = self.scanView.scanViewPlugin;
244+
NSObject<ALViewPluginBase> *scanViewPluginBase = self.scanView.viewPlugin;
247245
if ([scanViewPluginBase isKindOfClass:ALScanViewPlugin.class]) {
248246
ALScanViewPlugin *scanViewPlugin = (ALScanViewPlugin *)scanViewPluginBase;
249247
BOOL cancelOnResult = scanViewPlugin.scanPlugin.pluginConfig.cancelOnResult;

plugin/ios/ALPluginHelper.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ NS_ASSUME_NONNULL_BEGIN
55

66
@class ALPluginConfig;
77

8-
typedef void (^ALPluginCallback)(id _Nullable callbackObj, NSString * _Nullable errorString);
8+
typedef void (^ALPluginCallback)(NSDictionary * _Nullable callbackObj, NSError * _Nullable error);
99

1010

1111
@interface ALPluginHelper : NSObject

plugin/ios/ALPluginHelper.m

+4-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ + (void)startScan:(NSDictionary *)config finished:(ALPluginCallback)callback {
2727
if (@available(iOS 13.0, *)) {
2828

2929
if (![ALNFCDetector readingAvailable]) {
30-
callback(nil, @"NFC passport reading is not supported on this device or app.");
30+
callback(nil, [NSError errorWithDomain:@"ALReactDomain" code:100 userInfo:@{@"Error reason": @"NFC passport reading is not supported on this device or app."}]);
31+
3132
return;
3233
}
3334

@@ -42,7 +43,7 @@ + (void)startScan:(NSDictionary *)config finished:(ALPluginCallback)callback {
4243
completion:nil];
4344
}
4445
} else {
45-
callback(nil, @"NFC passport reading is only supported on iOS 13 and later.");
46+
callback(nil,[NSError errorWithDomain:@"ALReactDomain" code:100 userInfo:@{@"Error reason": @"NFC passport reading is only supported on iOS 13 and later."}]);
4647
return;
4748
}
4849
} else {
@@ -288,7 +289,7 @@ + (BOOL)showErrorAlertIfNeeded:(NSError *)error pluginCallback:(ALPluginCallback
288289

289290
[[UIApplication sharedApplication].keyWindow.rootViewController
290291
dismissViewControllerAnimated:YES completion:^{
291-
callback(nil, @"Canceled");
292+
callback(nil, [NSError errorWithDomain:@"" code:-1 userInfo:@{@"Error reason": @"Canceled"}]);
292293
}];
293294
}];
294295

plugin/ios/ALPluginScanViewController.m

+40-21
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ @interface ALPluginScanViewController () <ALScanPluginDelegate, ALViewPluginComp
3535
/// Applicable to non-composites (otherwise null)
3636
@property (nonatomic, readonly, nullable) ALPluginConfig *pluginConfig;
3737

38+
@property (nonatomic, strong) NSError *scanViewError;
39+
3840
@end
3941

4042

@@ -82,8 +84,9 @@ - (void)viewDidLoad {
8284
error:&error];
8385

8486
if ([self showErrorAlertIfNeeded:error]) {
85-
return;
86-
}
87+
self.scanViewError = error;
88+
return;
89+
}
8790

8891
[self.view addSubview:self.scanView];
8992

@@ -118,8 +121,15 @@ - (void)viewDidAppear:(BOOL)animated {
118121
[UIApplication sharedApplication].idleTimerDisabled = YES;
119122

120123
NSError *error;
121-
[self.scanView.scanViewPlugin startWithError:&error];
122-
[self showErrorAlertIfNeeded:error];
124+
if(!self.scanViewError){
125+
[self.scanView.viewPlugin startWithError:&error];
126+
[self showErrorAlertIfNeeded:error];
127+
}
128+
else{
129+
[self dismissViewControllerAnimated:YES completion:^{
130+
self.callback(nil, self.scanViewError);
131+
}];
132+
}
123133
}
124134

125135
- (void)viewDidDisappear:(BOOL)animated {
@@ -200,7 +210,7 @@ - (void)handleResult:(id _Nullable)resultObj {
200210
}
201211

202212
// dismiss the view controller, if cancelOnResult for the config is true
203-
NSObject<ALScanViewPluginBase> *scanViewPluginBase = self.scanView.scanViewPlugin;
213+
NSObject<ALViewPluginBase> *scanViewPluginBase = self.scanView.viewPlugin;
204214
if ([scanViewPluginBase isKindOfClass:ALScanViewPlugin.class]) {
205215
ALScanViewPlugin *scanViewPlugin = (ALScanViewPlugin *)scanViewPluginBase;
206216
BOOL cancelOnResult = scanViewPlugin.scanPlugin.pluginConfig.cancelOnResult;
@@ -289,7 +299,7 @@ - (void)scanView:(ALScanView *)scanView didReceiveNativeBarcodeResult:(ALScanRes
289299

290300
- (ALPluginConfig * _Nullable)pluginConfig {
291301
// applic. only to non-composites
292-
NSObject<ALScanViewPluginBase> *scanVwPluginBase = self.scanView.scanViewPlugin;
302+
NSObject<ALViewPluginBase> *scanVwPluginBase = self.scanView.viewPlugin;
293303
if ([scanVwPluginBase isKindOfClass:ALScanViewPlugin.class]) {
294304
return ((ALScanViewPlugin *)scanVwPluginBase).scanPlugin.pluginConfig;
295305
}
@@ -299,11 +309,11 @@ - (ALPluginConfig * _Nullable)pluginConfig {
299309
// MARK: - Selector Actions
300310

301311
- (void)doneButtonPressed:(id)sender {
302-
[self.scanView.scanViewPlugin stop];
312+
[self.scanView.viewPlugin stop];
303313

304314
__weak __block typeof(self) weakSelf = self;
305315
[self dismissViewControllerAnimated:YES completion:^{
306-
weakSelf.callback(nil, @"Canceled");
316+
weakSelf.callback(nil, [NSError errorWithDomain:@"ALReactDomain" code:-1 userInfo:@{NSLocalizedDescriptionKey: @"Canceled"}]);
307317
}];
308318
}
309319

@@ -356,25 +366,23 @@ - (void)updateScanModeWithValue:(NSString *)modeString {
356366

357367
// assume that pluginConfig carries the updated scanMode or whatever value that you wish to refresh.
358368
- (BOOL)updatePluginConfig:(ALPluginConfig *)pluginConfig error:(NSError * _Nullable * _Nullable)error {
359-
ALScanViewPluginConfig *origSVPConfig = ((ALScanViewPlugin *)self.scanView.scanViewPlugin).scanViewPluginConfig;
360-
ALScanViewPluginConfig *scanViewPluginConfig = [ALScanViewPluginConfig withPluginConfig:pluginConfig
361-
cutoutConfig:origSVPConfig.cutoutConfig
362-
scanFeedbackConfig:origSVPConfig.scanFeedbackConfig];
363-
ALScanViewPlugin *newScanViewPlugin = [[ALScanViewPlugin alloc] initWithConfig:scanViewPluginConfig error:error];
364-
if (!newScanViewPlugin) {
365-
return NO;
366-
}
367-
368-
newScanViewPlugin.scanPlugin.delegate = self;
369+
ALViewPluginConfig *origSVPConfig = ((ALScanViewPlugin *)self.scanView.viewPlugin).scanViewPluginConfig;
369370

370-
BOOL success = [self.scanView setScanViewPlugin:newScanViewPlugin error:error];
371+
origSVPConfig.pluginConfig = pluginConfig;
372+
BOOL success = [self.scanView setViewPluginConfig:origSVPConfig error:error];
371373
if (!success) {
374+
if([self showErrorAlertIfNeeded:*error]){
375+
[self dismissOnError:*error];
376+
}
372377
return NO;
373378
}
374379

375-
success = [[self.scanView scanViewPlugin] startWithError:error];
380+
success = [self.scanView.viewPlugin startWithError:error];
376381
if (!success) {
377382
// check error
383+
if([self showErrorAlertIfNeeded:*error]){
384+
[self dismissOnError:*error];
385+
}
378386
return NO;
379387
}
380388
return YES;
@@ -429,7 +437,18 @@ - (BOOL)segmentModesAreValid {
429437
// MARK: - Miscellaneous
430438

431439
- (BOOL)showErrorAlertIfNeeded:(NSError *)error {
432-
return [ALPluginHelper showErrorAlertIfNeeded:error pluginCallback:self.callback];
440+
if (!error) {
441+
return NO;
442+
}
443+
444+
return YES;
433445
}
434446

447+
-(void)dismissOnError:(NSError *)error{
448+
[self dismissViewControllerAnimated:YES completion:^{
449+
self.callback(nil, error);
450+
}];
451+
}
452+
453+
435454
@end

plugin/ios/AnylineReact.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Pod::Spec.new do |s|
1818
s.source = { :git => "https://github.com/Anyline/anyline-ocr-react-native-module.git", :tag => "#{s.version}" }
1919

2020
s.source_files = "*.{h,m}"
21-
s.dependency "Anyline", "~> 52"
21+
s.dependency "Anyline", "53.0.0"
2222
s.dependency "React"
2323

2424
end

0 commit comments

Comments
 (0)