react-native-okaycam 1.1.11 → 1.1.21
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/android/.DS_Store +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.8/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.8/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.8/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.8/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/6.8/gc.properties +0 -0
- package/android/.gradle/6.8/javaCompile/classAnalysis.bin +0 -0
- package/android/.gradle/6.8/javaCompile/jarAnalysis.bin +0 -0
- package/android/.gradle/6.8/javaCompile/javaCompile.lock +0 -0
- package/android/.gradle/6.8/javaCompile/taskHistory.bin +0 -0
- package/android/.gradle/7.1.1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.1.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.1.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.2/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.idea/.gitignore +3 -0
- package/android/.idea/compiler.xml +6 -0
- package/android/.idea/gradle.xml +8 -4
- package/android/.idea/jarRepositories.xml +35 -0
- package/android/.idea/libraries/Gradle__androidx_activity_activity_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_2_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_core_core_1_3_1_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_1_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_v4_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_1_0.xml +11 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_media_media_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
- package/android/.idea/libraries/Gradle__com_caverock_androidsvg_aar_1_4_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_0_8_1_aar.xml +16 -0
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp_0_8_1_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_20_1_aar.xml +19 -0
- package/android/.idea/libraries/Gradle__com_facebook_stetho_stetho_1_2_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_facebook_stetho_stetho_okhttp_1_2_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_fasterxml_jackson_core_jackson_core_2_2_3.xml +13 -0
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_googlecode_json_simple_json_simple_1_1_1.xml +13 -0
- package/android/.idea/libraries/Gradle__com_innov8tif_okaycam_OkayCam_1_1_8_aar.xml +15 -0
- package/android/.idea/libraries/Gradle__com_nineoldandroids_library_2_4_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_parse_bolts_bolts_android_1_1_4.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp_okhttp_2_5_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okhttp_okhttp_ws_2_5_0.xml +13 -0
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_6_0.xml +13 -0
- package/android/.idea/libraries/Gradle__commons_cli_commons_cli_1_2.xml +13 -0
- package/android/.idea/libraries/Gradle__junit_junit_4_10.xml +13 -0
- package/android/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_1.xml +11 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_4_21.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_21.xml +13 -0
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_21.xml +13 -0
- package/android/.idea/libraries/Gradle__org_webkit_android_jsc_r174650_aar.xml +11 -0
- package/android/.idea/misc.xml +1 -1
- package/android/.idea/modules/android.iml +93 -6
- package/android/build/generated/source/buildConfig/debug/com/innov8tif/RNOkayCam/BuildConfig.java +12 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +11 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json +27 -0
- package/android/build/intermediates/aar_main_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/annotations_typedef_file/debug/typedefs.txt +0 -0
- package/android/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +3230 -0
- package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
- package/android/build/intermediates/incremental/debug-mergeNativeLibs/merge-state +0 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +1 -0
- package/android/build/intermediates/incremental/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/classes/com/innov8tif/RNOkayCam/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/innov8tif/RNOkayCam/RNOkayCamModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/innov8tif/RNOkayCam/RNOkayCamPackage.class +0 -0
- package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +11 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +2 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +13 -0
- package/android/build/intermediates/merged_java_res/debug/out.jar +0 -0
- package/android/build/intermediates/merged_manifests/debug/output.json +27 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +2248 -0
- package/android/build/outputs/aar/android-debug.aar +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +37 -0
- package/android/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt +6 -0
- package/android/build.gradle +13 -5
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/android/gradle.properties +2 -0
- package/android/gradlew +185 -0
- package/android/gradlew.bat +89 -0
- package/android/src/main/java/com/innov8tif/RNOkayCam/RNOkayCamModule.java +347 -248
- package/index.ts +182 -152
- package/ios/RNOkayCam.swift +41 -0
- package/ios/RNOkayCam.xcodeproj/project.pbxproj +55 -2
- package/ios/RNOkayCam.xcodeproj/xcuserdata/thet.xcuserdatad/xcschemes/xcschememanagement.plist +1 -1
- package/ios/RNOkayCam.xcworkspace/contents.xcworkspacedata +3 -0
- package/ios/RNOkayCam.xcworkspace/xcuserdata/thet.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/package.json +1 -1
- package/react-native-okaycam.podspec +1 -1
- package/android/.idea/workspace.xml +0 -44
|
@@ -27,6 +27,7 @@ import com.innov8tif.okaycam.config.OkayCamCaptureConfig;
|
|
|
27
27
|
import com.innov8tif.okaycam.config.OkayCamConfig;
|
|
28
28
|
import com.innov8tif.okaycam.config.OkayCamFrameConfig;
|
|
29
29
|
import com.innov8tif.okaycam.config.OkayCamLabelConfig;
|
|
30
|
+
import com.innov8tif.okaycam.config.OkayCamPreviewConfig;
|
|
30
31
|
import com.innov8tif.okaycam.config.OkayCamTimerConfig;
|
|
31
32
|
import com.innov8tif.okaycam.config.OkaySelfieConfig;
|
|
32
33
|
import com.innov8tif.okaycam.config.OkaySelfieLabelConfig;
|
|
@@ -46,310 +47,408 @@ import java.net.URL;
|
|
|
46
47
|
|
|
47
48
|
public class RNOkayCamModule extends ReactContextBaseJavaModule {
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
private final ReactApplicationContext reactContext;
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
public RNOkayCamModule(ReactApplicationContext reactContext) {
|
|
53
|
+
super(reactContext);
|
|
54
|
+
this.reactContext = reactContext;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@Override
|
|
58
|
+
public String getName() {
|
|
59
|
+
return "RNOkayCam";
|
|
60
|
+
}
|
|
55
61
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
62
|
+
@ReactMethod
|
|
63
|
+
public void captureDocument(ReadableMap configs, Promise promise) {
|
|
64
|
+
String LICENSE_KEY = configs.getString("license");
|
|
60
65
|
|
|
61
|
-
|
|
62
|
-
public void captureDocument(ReadableMap configs, Promise promise) {
|
|
63
|
-
String LICENSE_KEY = configs.getString("license");
|
|
66
|
+
Boolean base64 = configs.getBoolean("base64");
|
|
64
67
|
|
|
65
|
-
|
|
68
|
+
ReadableMap userConfig = configs.getMap("config");
|
|
69
|
+
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
70
|
+
ReadableMap bottomLabel = userConfig.getMap("bottomLabel");
|
|
71
|
+
ReadableMap frame = userConfig.getMap("frame");
|
|
72
|
+
ReadableMap timer = userConfig.getMap("timer");
|
|
73
|
+
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
74
|
+
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
75
|
+
ReadableMap captureConfigPair = userConfig.getMap("captureConfigPair");
|
|
76
|
+
ReadableMap firstPhoto = captureConfigPair.getMap("firstPhoto");
|
|
77
|
+
ReadableMap secondPhoto = captureConfigPair.getMap("secondPhoto");
|
|
78
|
+
ReadableMap preview = userConfig.getMap("preview");
|
|
66
79
|
|
|
67
|
-
ReadableMap userConfig = configs.getMap("config");
|
|
68
|
-
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
69
|
-
ReadableMap bottomLabel = userConfig.getMap("bottomLabel");
|
|
70
|
-
ReadableMap frame = userConfig.getMap("frame");
|
|
71
|
-
ReadableMap timer = userConfig.getMap("timer");
|
|
72
|
-
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
73
|
-
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
74
|
-
ReadableMap captureConfigPair = userConfig.getMap("captureConfigPair");
|
|
75
|
-
ReadableMap firstPhoto = captureConfigPair.getMap("firstPhoto");
|
|
76
|
-
ReadableMap secondPhoto = captureConfigPair.getMap("secondPhoto");
|
|
77
80
|
|
|
78
|
-
|
|
81
|
+
OkayCamConfig okayCamConfig = OkayCamConfig.init(this.getCurrentActivity());
|
|
79
82
|
|
|
80
|
-
|
|
83
|
+
okayCamConfig.setShowOverlay(userConfig.getBoolean("showOverlay"));
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
okayCamConfig.setTorchBtnEnabled(userConfig.getBoolean("torchBtnEnabled"));
|
|
86
|
+
okayCamConfig.setCrop(userConfig.getBoolean("crop"));
|
|
84
87
|
|
|
85
|
-
|
|
86
|
-
|
|
88
|
+
if (userConfig.getInt("width") != -1) {
|
|
89
|
+
okayCamConfig.setWidth(userConfig.getInt("width"));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
okayCamConfig.setImageQuality((float) userConfig.getDouble("imageQuality"));
|
|
93
|
+
|
|
94
|
+
okayCamConfig.setTopLabel(new OkayCamLabelConfig(
|
|
95
|
+
topLabel.getString("text"),
|
|
96
|
+
Color.parseColor(topLabel.getString("color")),
|
|
97
|
+
topLabel.getInt("size")
|
|
98
|
+
));
|
|
99
|
+
okayCamConfig.setBottomLabel(new OkayCamLabelConfig(
|
|
100
|
+
bottomLabel.getString("text"),
|
|
101
|
+
Color.parseColor(bottomLabel.getString("color")),
|
|
102
|
+
bottomLabel.getInt("size")
|
|
103
|
+
));
|
|
104
|
+
|
|
105
|
+
OkayCamFrameConfig frameConfig = getFrameConfig(frame);
|
|
106
|
+
okayCamConfig.setFrame(frameConfig);
|
|
107
|
+
|
|
108
|
+
okayCamConfig.setCaptureBtnColor(Color.parseColor(userConfig.getString("captureBtnColor")));
|
|
109
|
+
okayCamConfig.setTimer(new OkayCamTimerConfig(
|
|
110
|
+
Color.parseColor(timer.getString("backgroundColor")),
|
|
111
|
+
Color.parseColor(timer.getString("textColor"))
|
|
112
|
+
));
|
|
113
|
+
|
|
114
|
+
okayCamConfig.setConfirmBtnConfig(new OkayCamBtnConfig(
|
|
115
|
+
Color.parseColor(confirmBtnConfig.getString("backgroundColor")),
|
|
116
|
+
Color.parseColor(confirmBtnConfig.getString("contentColor"))
|
|
117
|
+
));
|
|
118
|
+
|
|
119
|
+
okayCamConfig.setRetakeBtnConfig(new OkayCamBtnConfig(
|
|
120
|
+
Color.parseColor(retakeBtnConfig.getString("backgroundColor")),
|
|
121
|
+
Color.parseColor(retakeBtnConfig.getString("contentColor"))
|
|
122
|
+
));
|
|
123
|
+
|
|
124
|
+
okayCamConfig.setCaptureConfig(new CaptureConfigPair(
|
|
125
|
+
firstPhoto != null ? new OkayCamCaptureConfig(
|
|
126
|
+
firstPhoto.getInt("delay"),
|
|
127
|
+
firstPhoto.getBoolean("onFlash"),
|
|
128
|
+
firstPhoto.getString("outputPath")
|
|
129
|
+
) : null,
|
|
130
|
+
secondPhoto != null ? new OkayCamCaptureConfig(
|
|
131
|
+
secondPhoto.getInt("delay"),
|
|
132
|
+
secondPhoto.getBoolean("onFlash"),
|
|
133
|
+
secondPhoto.getString("outputPath")
|
|
134
|
+
) : null
|
|
135
|
+
));
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
okayCamConfig.setPreview(getPreviewConfig(preview, frameConfig));
|
|
139
|
+
|
|
140
|
+
OkayCamDoc.start(this.getCurrentActivity(), LICENSE_KEY, okayCamConfig, (success, images, exception) -> {
|
|
141
|
+
|
|
142
|
+
if (success) {
|
|
143
|
+
JSONObject results = new JSONObject();
|
|
144
|
+
try {
|
|
145
|
+
|
|
146
|
+
results.put("fullDocumentImage", convertImgToBase64(base64, images.get(0)));
|
|
147
|
+
|
|
148
|
+
if (images.size() > 1) {
|
|
149
|
+
results.put("fullDocumentImage2", convertImgToBase64(base64, images.get(1)));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
promise.resolve(results.toString());
|
|
153
|
+
} catch (JSONException e) {
|
|
154
|
+
// TODO Auto-generated catch block
|
|
155
|
+
e.printStackTrace();
|
|
156
|
+
promise.reject(this.getError(e.getMessage()));
|
|
157
|
+
}
|
|
158
|
+
} else {
|
|
159
|
+
promise.reject(this.getError(exception.getMessage()));
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
});
|
|
87
163
|
}
|
|
88
164
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
));
|
|
96
|
-
okayCamConfig.setBottomLabel(new OkayCamLabelConfig(
|
|
97
|
-
bottomLabel.getString("text"),
|
|
98
|
-
Color.parseColor(bottomLabel.getString("color")),
|
|
99
|
-
bottomLabel.getInt("size")
|
|
100
|
-
));
|
|
101
|
-
|
|
102
|
-
okayCamConfig.setFrame(getFrameConfig(frame));
|
|
103
|
-
|
|
104
|
-
okayCamConfig.setCaptureBtnColor(Color.parseColor(userConfig.getString("captureBtnColor")));
|
|
105
|
-
okayCamConfig.setTimer(new OkayCamTimerConfig(
|
|
106
|
-
Color.parseColor(timer.getString("backgroundColor")),
|
|
107
|
-
Color.parseColor(timer.getString("textColor"))
|
|
108
|
-
));
|
|
109
|
-
|
|
110
|
-
okayCamConfig.setConfirmBtnConfig(new OkayCamBtnConfig(
|
|
111
|
-
Color.parseColor(confirmBtnConfig.getString("backgroundColor")),
|
|
112
|
-
Color.parseColor(confirmBtnConfig.getString("contentColor"))
|
|
113
|
-
));
|
|
114
|
-
|
|
115
|
-
okayCamConfig.setRetakeBtnConfig(new OkayCamBtnConfig(
|
|
116
|
-
Color.parseColor(retakeBtnConfig.getString("backgroundColor")),
|
|
117
|
-
Color.parseColor(retakeBtnConfig.getString("contentColor"))
|
|
118
|
-
));
|
|
119
|
-
|
|
120
|
-
okayCamConfig.setCaptureConfig(new CaptureConfigPair(
|
|
121
|
-
firstPhoto != null ? new OkayCamCaptureConfig(
|
|
122
|
-
firstPhoto.getInt("delay"),
|
|
123
|
-
firstPhoto.getBoolean("onFlash"),
|
|
124
|
-
firstPhoto.getString("outputPath")
|
|
125
|
-
) : null,
|
|
126
|
-
secondPhoto != null ? new OkayCamCaptureConfig(
|
|
127
|
-
secondPhoto.getInt("delay"),
|
|
128
|
-
secondPhoto.getBoolean("onFlash"),
|
|
129
|
-
secondPhoto.getString("outputPath")
|
|
130
|
-
) : null
|
|
131
|
-
));
|
|
132
|
-
|
|
133
|
-
OkayCamDoc.start(this.getCurrentActivity(), LICENSE_KEY, okayCamConfig, (success, images, exception) -> {
|
|
134
|
-
|
|
135
|
-
if (success) {
|
|
136
|
-
JSONObject results = new JSONObject();
|
|
137
|
-
try {
|
|
165
|
+
private OkayCamPreviewConfig getPreviewConfig(ReadableMap preview, OkayCamFrameConfig frameConfig) {
|
|
166
|
+
if (preview == null) return null;
|
|
167
|
+
OkayCamLabelConfig title = mapToLabelConfig(preview.getMap("title"));
|
|
168
|
+
OkayCamLabelConfig instr1 = mapToLabelConfig(preview.getMap("instruction1"));
|
|
169
|
+
OkayCamLabelConfig instr2 = mapToLabelConfig(preview.getMap("instruction2"));
|
|
170
|
+
OkayCamLabelConfig instr3 = mapToLabelConfig(preview.getMap("instruction3"));
|
|
138
171
|
|
|
139
|
-
|
|
172
|
+
int bgColor = Color.parseColor(preview.getString("backgroundColor"));
|
|
140
173
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
174
|
+
String refImage = preview.getString("refImage");
|
|
175
|
+
|
|
176
|
+
Size size = frameConfig.getSize();
|
|
177
|
+
int frameWidth = size.getWidth();
|
|
178
|
+
int frameHeight = size.getHeight();
|
|
144
179
|
|
|
145
|
-
promise.resolve(results.toString());
|
|
146
|
-
} catch (JSONException e) {
|
|
147
|
-
// TODO Auto-generated catch block
|
|
148
|
-
e.printStackTrace();
|
|
149
|
-
promise.reject(this.getError(e.getMessage()));
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
promise.reject(this.getError(exception.getMessage()));
|
|
154
|
-
}
|
|
155
|
-
return null;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
private OkayCamFrameConfig getFrameConfig(ReadableMap frameConfig) {
|
|
160
|
-
ReadableMap frameSizeMap = frameConfig.getMap("size");
|
|
161
|
-
String frameColor = frameConfig.getString("color");
|
|
162
|
-
String frameContent = frameConfig.getString("content");
|
|
163
|
-
|
|
164
|
-
int frameWidth = frameSizeMap.getInt("width");
|
|
165
|
-
int frameHeight = frameSizeMap.getInt("height");
|
|
166
|
-
Size frameSize = new Size(frameWidth, frameHeight);
|
|
167
|
-
|
|
168
|
-
try {
|
|
169
|
-
if (frameContent != null) {
|
|
170
180
|
Bitmap contentBmp = null;
|
|
181
|
+
try {
|
|
182
|
+
if (refImage != null) {
|
|
171
183
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
184
|
+
// In debug, the image is returned as URL
|
|
185
|
+
if (BuildConfig.DEBUG) {
|
|
186
|
+
InputStream inputStream = new URL(refImage).openStream();
|
|
175
187
|
|
|
176
|
-
|
|
188
|
+
if (refImage.contains("svg")) {
|
|
177
189
|
|
|
178
|
-
|
|
190
|
+
SVG svg = SVG.getFromInputStream(inputStream);
|
|
179
191
|
|
|
180
|
-
|
|
181
|
-
|
|
192
|
+
svg.setDocumentWidth(frameWidth);
|
|
193
|
+
svg.setDocumentHeight(frameHeight);
|
|
182
194
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
195
|
+
if (svg.getDocumentWidth() != -1) {
|
|
196
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
197
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
198
|
+
Bitmap.Config.ARGB_8888);
|
|
187
199
|
|
|
188
|
-
|
|
200
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
189
201
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
202
|
+
// Render our document onto our canvas
|
|
203
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
204
|
+
}
|
|
205
|
+
} else {
|
|
206
|
+
contentBmp = BitmapFactory.decodeStream(inputStream);
|
|
207
|
+
}
|
|
208
|
+
} else {
|
|
209
|
+
// In release, the image is returned as raw (svg) or drawable (png, jpeg and etc)
|
|
210
|
+
int resourceId = this.getCurrentActivity().getResources().getIdentifier(refImage, "raw", this.getCurrentActivity().getPackageName());
|
|
199
211
|
|
|
200
|
-
|
|
201
|
-
|
|
212
|
+
if (resourceId != 0) {
|
|
213
|
+
SVG svg = SVG.getFromResource(getReactApplicationContext(), resourceId);
|
|
202
214
|
|
|
203
|
-
|
|
204
|
-
|
|
215
|
+
svg.setDocumentWidth(frameWidth);
|
|
216
|
+
svg.setDocumentHeight(frameHeight);
|
|
205
217
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
218
|
+
if (svg.getDocumentWidth() != -1) {
|
|
219
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
220
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
221
|
+
Bitmap.Config.ARGB_8888);
|
|
210
222
|
|
|
211
|
-
|
|
223
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
212
224
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
225
|
+
// Render our document onto our canvas
|
|
226
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
227
|
+
}
|
|
228
|
+
} else {
|
|
229
|
+
resourceId = this.getCurrentActivity().getResources().getIdentifier(refImage, "drawable", this.getCurrentActivity().getPackageName());
|
|
230
|
+
contentBmp = BitmapFactory.decodeResource(getReactApplicationContext().getResources(), resourceId);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
216
233
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
234
|
+
} catch (SVGParseException | MalformedURLException e) {
|
|
235
|
+
e.printStackTrace();
|
|
236
|
+
} catch (IOException e) {
|
|
237
|
+
e.printStackTrace();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
return new OkayCamPreviewConfig(
|
|
242
|
+
title,
|
|
243
|
+
generateFile(contentBmp, "ref.png"),
|
|
244
|
+
instr1,
|
|
245
|
+
instr2,
|
|
246
|
+
instr3,
|
|
247
|
+
bgColor
|
|
248
|
+
);
|
|
249
|
+
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
private OkayCamLabelConfig mapToLabelConfig(ReadableMap map) {
|
|
253
|
+
return new OkayCamLabelConfig(
|
|
254
|
+
map.getString("text"),
|
|
255
|
+
Color.parseColor(map.getString("color")),
|
|
256
|
+
map.getInt("size")
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
private OkayCamFrameConfig getFrameConfig(ReadableMap frameConfig) {
|
|
262
|
+
ReadableMap frameSizeMap = frameConfig.getMap("size");
|
|
263
|
+
String frameColor = frameConfig.getString("color");
|
|
264
|
+
String frameContent = frameConfig.getString("content");
|
|
265
|
+
|
|
266
|
+
int frameWidth = frameSizeMap.getInt("width");
|
|
267
|
+
int frameHeight = frameSizeMap.getInt("height");
|
|
268
|
+
Size frameSize = new Size(frameWidth, frameHeight);
|
|
269
|
+
|
|
270
|
+
try {
|
|
271
|
+
if (frameContent != null) {
|
|
272
|
+
Bitmap contentBmp = null;
|
|
273
|
+
|
|
274
|
+
// In debug, the image is returned as URL
|
|
275
|
+
if (BuildConfig.DEBUG) {
|
|
276
|
+
InputStream inputStream = new URL(frameContent).openStream();
|
|
277
|
+
|
|
278
|
+
if (frameContent.contains("svg")) {
|
|
279
|
+
|
|
280
|
+
SVG svg = SVG.getFromInputStream(inputStream);
|
|
281
|
+
|
|
282
|
+
svg.setDocumentWidth(frameWidth);
|
|
283
|
+
svg.setDocumentHeight(frameHeight);
|
|
284
|
+
|
|
285
|
+
if (svg.getDocumentWidth() != -1) {
|
|
286
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
287
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
288
|
+
Bitmap.Config.ARGB_8888);
|
|
289
|
+
|
|
290
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
291
|
+
|
|
292
|
+
// Render our document onto our canvas
|
|
293
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
294
|
+
}
|
|
295
|
+
} else {
|
|
296
|
+
contentBmp = BitmapFactory.decodeStream(inputStream);
|
|
297
|
+
}
|
|
298
|
+
} else {
|
|
299
|
+
// In release, the image is returned as raw (svg) or drawable (png, jpeg and etc)
|
|
300
|
+
int resourceId = this.getCurrentActivity().getResources().getIdentifier(frameContent, "raw", this.getCurrentActivity().getPackageName());
|
|
301
|
+
|
|
302
|
+
if (resourceId != 0) {
|
|
303
|
+
SVG svg = SVG.getFromResource(getReactApplicationContext(), resourceId);
|
|
304
|
+
|
|
305
|
+
svg.setDocumentWidth(frameWidth);
|
|
306
|
+
svg.setDocumentHeight(frameHeight);
|
|
307
|
+
|
|
308
|
+
if (svg.getDocumentWidth() != -1) {
|
|
309
|
+
contentBmp = Bitmap.createBitmap((int) Math.ceil(svg.getDocumentWidth()),
|
|
310
|
+
(int) Math.ceil(svg.getDocumentHeight()),
|
|
311
|
+
Bitmap.Config.ARGB_8888);
|
|
312
|
+
|
|
313
|
+
Canvas bmcanvas = new Canvas(contentBmp);
|
|
314
|
+
|
|
315
|
+
// Render our document onto our canvas
|
|
316
|
+
svg.renderToCanvas(bmcanvas, new RenderOptions().preserveAspectRatio(PreserveAspectRatio.FULLSCREEN));
|
|
317
|
+
}
|
|
318
|
+
} else {
|
|
319
|
+
resourceId = this.getCurrentActivity().getResources().getIdentifier(frameContent, "drawable", this.getCurrentActivity().getPackageName());
|
|
320
|
+
contentBmp = BitmapFactory.decodeResource(getReactApplicationContext().getResources(), resourceId);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return new OkayCamFrameConfig(frameSize, Color.parseColor(frameColor), generateFile(contentBmp, "content.png"));
|
|
220
324
|
}
|
|
325
|
+
} catch (SVGParseException | MalformedURLException e) {
|
|
326
|
+
e.printStackTrace();
|
|
327
|
+
} catch (IOException e) {
|
|
328
|
+
e.printStackTrace();
|
|
221
329
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
} catch (SVGParseException | MalformedURLException e) {
|
|
225
|
-
e.printStackTrace();
|
|
226
|
-
} catch (IOException e) {
|
|
227
|
-
e.printStackTrace();
|
|
330
|
+
|
|
331
|
+
return new OkayCamFrameConfig(frameSize, Color.parseColor(frameColor), null);
|
|
228
332
|
}
|
|
229
333
|
|
|
230
|
-
|
|
231
|
-
|
|
334
|
+
public String generateFile(Bitmap bitmap, String filename) {
|
|
335
|
+
try {
|
|
336
|
+
String resultedFolder = ".private";
|
|
337
|
+
File privateFolder = this.getReactApplicationContext().getExternalFilesDir(resultedFolder);
|
|
232
338
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
File privateFolder = this.getReactApplicationContext().getExternalFilesDir(resultedFolder);
|
|
339
|
+
if (!privateFolder.exists()) {
|
|
340
|
+
privateFolder.mkdir();
|
|
341
|
+
}
|
|
237
342
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
343
|
+
File file = new File(privateFolder, filename);
|
|
344
|
+
file.createNewFile();
|
|
241
345
|
|
|
242
|
-
|
|
243
|
-
|
|
346
|
+
FileOutputStream fos = new FileOutputStream(file.getAbsolutePath());
|
|
347
|
+
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
|
|
244
348
|
|
|
245
|
-
|
|
246
|
-
|
|
349
|
+
return file.getAbsolutePath();
|
|
350
|
+
} catch (IOException e) {
|
|
351
|
+
e.printStackTrace();
|
|
352
|
+
}
|
|
247
353
|
|
|
248
|
-
|
|
249
|
-
} catch (IOException e) {
|
|
250
|
-
e.printStackTrace();
|
|
354
|
+
return null;
|
|
251
355
|
}
|
|
252
356
|
|
|
253
|
-
|
|
254
|
-
|
|
357
|
+
@ReactMethod
|
|
358
|
+
public void captureSelfie(ReadableMap configs, Promise promise) {
|
|
359
|
+
String LICENSE_KEY = configs.getString("license");
|
|
255
360
|
|
|
256
|
-
|
|
257
|
-
public void captureSelfie(ReadableMap configs, Promise promise) {
|
|
258
|
-
String LICENSE_KEY = configs.getString("license");
|
|
361
|
+
Boolean base64 = configs.getBoolean("base64");
|
|
259
362
|
|
|
260
|
-
|
|
363
|
+
ReadableMap userConfig = configs.getMap("config");
|
|
364
|
+
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
365
|
+
ReadableMap switchBtnConfig = userConfig.getMap("switchBtnConfig");
|
|
366
|
+
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
367
|
+
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
261
368
|
|
|
262
|
-
|
|
263
|
-
ReadableMap topLabel = userConfig.getMap("topLabel");
|
|
264
|
-
ReadableMap switchBtnConfig = userConfig.getMap("switchBtnConfig");
|
|
265
|
-
ReadableMap confirmBtnConfig = userConfig.getMap("confirmBtnConfig");
|
|
266
|
-
ReadableMap retakeBtnConfig = userConfig.getMap("retakeBtnConfig");
|
|
369
|
+
OkaySelfieConfig okaySelfieConfig = OkaySelfieConfig.init(this.getCurrentActivity());
|
|
267
370
|
|
|
268
|
-
|
|
371
|
+
okaySelfieConfig.setTopLabel(new OkaySelfieLabelConfig(
|
|
372
|
+
topLabel.getString("text"),
|
|
373
|
+
Color.parseColor(topLabel.getString("color")),
|
|
374
|
+
topLabel.getInt("size")
|
|
375
|
+
));
|
|
376
|
+
okaySelfieConfig.setBottomFrameColor(Color.parseColor(userConfig.getString("bottomFrameColor")));
|
|
269
377
|
|
|
270
|
-
|
|
271
|
-
topLabel.getString("text"),
|
|
272
|
-
Color.parseColor(topLabel.getString("color")),
|
|
273
|
-
topLabel.getInt("size")
|
|
274
|
-
));
|
|
275
|
-
okaySelfieConfig.setBottomFrameColor(Color.parseColor(userConfig.getString("bottomFrameColor")));
|
|
378
|
+
okaySelfieConfig.setCaptureBtnColor(Color.parseColor(userConfig.getString("captureBtnColor")));
|
|
276
379
|
|
|
277
|
-
|
|
380
|
+
okaySelfieConfig.setSwitchBtnConfig(new OkaySelfieSwichBtnConfig(
|
|
381
|
+
Color.parseColor(switchBtnConfig.getString("color")),
|
|
382
|
+
switchBtnConfig.getBoolean("show")
|
|
383
|
+
));
|
|
278
384
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
385
|
+
okaySelfieConfig.setConfirmBtnConfig(new OkayCamBtnConfig(
|
|
386
|
+
Color.parseColor(confirmBtnConfig.getString("backgroundColor")),
|
|
387
|
+
Color.parseColor(confirmBtnConfig.getString("contentColor"))
|
|
388
|
+
));
|
|
283
389
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
390
|
+
okaySelfieConfig.setRetakeBtnConfig(new OkayCamBtnConfig(
|
|
391
|
+
Color.parseColor(retakeBtnConfig.getString("backgroundColor")),
|
|
392
|
+
Color.parseColor(retakeBtnConfig.getString("contentColor"))
|
|
393
|
+
));
|
|
288
394
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
395
|
+
if (userConfig.getString("defaultCameraFacing").equals("front")) {
|
|
396
|
+
okaySelfieConfig.setDefaultCameraFacing(CameraFacing.FRONT);
|
|
397
|
+
} else if (userConfig.getString("defaultCameraFacing").equals("back")) {
|
|
398
|
+
okaySelfieConfig.setDefaultCameraFacing(CameraFacing.BACK);
|
|
399
|
+
}
|
|
293
400
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
else if (userConfig.getString("defaultCameraFacing").equals("back")) {
|
|
298
|
-
okaySelfieConfig.setDefaultCameraFacing(CameraFacing.BACK);
|
|
299
|
-
}
|
|
401
|
+
if (userConfig.getInt("width") != -1) {
|
|
402
|
+
okaySelfieConfig.setWidth(userConfig.getInt("width"));
|
|
403
|
+
}
|
|
300
404
|
|
|
301
|
-
|
|
302
|
-
okaySelfieConfig.setWidth(userConfig.getInt("width"));
|
|
303
|
-
}
|
|
405
|
+
okaySelfieConfig.setImageQuality((float) userConfig.getDouble("imageQuality"));
|
|
304
406
|
|
|
305
|
-
|
|
407
|
+
OkayCamSelfie.start(this.getCurrentActivity(), LICENSE_KEY, okaySelfieConfig, (success, image, exception) -> {
|
|
306
408
|
|
|
307
|
-
|
|
409
|
+
if (success) {
|
|
410
|
+
|
|
411
|
+
JSONObject results = new JSONObject();
|
|
412
|
+
try {
|
|
413
|
+
results.put("selfieImage", convertImgToBase64(base64, image));
|
|
414
|
+
promise.resolve(results.toString());
|
|
415
|
+
} catch (JSONException e) {
|
|
416
|
+
// TODO Auto-generated catch block
|
|
417
|
+
e.printStackTrace();
|
|
418
|
+
promise.reject(this.getError(e.getMessage()));
|
|
419
|
+
}
|
|
420
|
+
} else {
|
|
421
|
+
promise.reject(this.getError(exception.getMessage()));
|
|
422
|
+
}
|
|
423
|
+
return null;
|
|
424
|
+
});
|
|
425
|
+
}
|
|
308
426
|
|
|
309
|
-
|
|
427
|
+
public String convertImgToBase64(Boolean base64, String image) {
|
|
428
|
+
String result = "file://" + image;
|
|
310
429
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
results.put("selfieImage", convertImgToBase64(base64, image));
|
|
314
|
-
promise.resolve(results.toString());
|
|
315
|
-
} catch (JSONException e) {
|
|
316
|
-
// TODO Auto-generated catch block
|
|
317
|
-
e.printStackTrace();
|
|
318
|
-
promise.reject(this.getError(e.getMessage()));
|
|
430
|
+
if (base64) {
|
|
431
|
+
result = BitmapUtils.INSTANCE.convertToBase64(image);
|
|
319
432
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
promise.reject(this.getError(exception.getMessage()));
|
|
323
|
-
}
|
|
324
|
-
return null;
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
public String convertImgToBase64(Boolean base64, String image) {
|
|
329
|
-
String result = "file://" + image;
|
|
330
|
-
|
|
331
|
-
if (base64) {
|
|
332
|
-
result = BitmapUtils.INSTANCE.convertToBase64(image);
|
|
433
|
+
|
|
434
|
+
return result;
|
|
333
435
|
}
|
|
334
436
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
errorString = "failed";
|
|
437
|
+
private Exception getError(String error) {
|
|
438
|
+
String errorString = "";
|
|
439
|
+
switch (error) {
|
|
440
|
+
case "Invalid license key":
|
|
441
|
+
errorString = "invalid license";
|
|
442
|
+
break;
|
|
443
|
+
case "User refused to grant permission.":
|
|
444
|
+
errorString = "camera permission denied";
|
|
445
|
+
break;
|
|
446
|
+
case "User cancelled the activity.":
|
|
447
|
+
errorString = "cancel";
|
|
448
|
+
break;
|
|
449
|
+
default:
|
|
450
|
+
errorString = "failed";
|
|
451
|
+
}
|
|
452
|
+
return new Exception(errorString);
|
|
352
453
|
}
|
|
353
|
-
return new Exception(errorString);
|
|
354
|
-
}
|
|
355
454
|
}
|