@regulaforensics/cordova-plugin-document-reader-api 8.1.129-nightly → 8.1.131-nightly

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.
@@ -1,52 +1,17 @@
1
- package cordova.plugin.documentreader
1
+ package com.regula.plugin.documentreader
2
2
 
3
3
  import android.app.Activity
4
- import android.app.PendingIntent
5
4
  import android.content.Context
6
5
  import android.content.Intent
7
- import android.content.IntentFilter
8
- import android.nfc.NfcAdapter
9
- import android.nfc.tech.IsoDep
10
- import android.os.Build
6
+ import android.util.Log
11
7
  import androidx.appcompat.app.AppCompatActivity
12
8
  import androidx.lifecycle.Lifecycle
13
- import androidx.lifecycle.LifecycleEventObserver
14
- import com.regula.common.LocalizationCallbacks
15
- import com.regula.documentreader.api.DocumentReader.Instance
16
- import com.regula.documentreader.api.completions.IDocumentReaderCompletion
17
- import com.regula.documentreader.api.completions.IDocumentReaderInitCompletion
18
- import com.regula.documentreader.api.completions.IDocumentReaderPrepareDbCompletion
19
- import com.regula.documentreader.api.completions.model.PrepareProgress
20
- import com.regula.documentreader.api.completions.rfid.IRfidPKDCertificateCompletion
21
- import com.regula.documentreader.api.completions.rfid.IRfidReaderCompletion
22
- import com.regula.documentreader.api.completions.rfid.IRfidReaderRequest
23
- import com.regula.documentreader.api.completions.rfid.IRfidTASignatureCompletion
24
- import com.regula.documentreader.api.completions.rfid.certificates.IRfidPACertificates
25
- import com.regula.documentreader.api.completions.rfid.certificates.IRfidTACertificates
26
- import com.regula.documentreader.api.completions.rfid.certificates.IRfidTASignature
27
- import com.regula.documentreader.api.enums.DocReaderAction
28
- import com.regula.documentreader.api.enums.LCID
29
- import com.regula.documentreader.api.enums.eImageQualityCheckType
30
- import com.regula.documentreader.api.enums.eLDS_ParsingErrorCodes
31
- import com.regula.documentreader.api.enums.eLDS_ParsingNotificationCodes
32
- import com.regula.documentreader.api.enums.eRFID_DataFile_Type
33
- import com.regula.documentreader.api.enums.eRFID_ErrorCodes
34
- import com.regula.documentreader.api.enums.eVisualFieldType
35
- import com.regula.documentreader.api.errors.DocReaderRfidException
36
- import com.regula.documentreader.api.errors.DocumentReaderException
37
- import com.regula.documentreader.api.internal.core.CoreScenarioUtil
38
- import com.regula.documentreader.api.results.DocumentReaderNotification
39
- import com.regula.documentreader.api.results.DocumentReaderResults
40
- import com.regula.documentreader.api.results.DocumentReaderResults.fromRawResults
41
- import com.regula.documentreader.api.results.DocumentReaderScenario
42
- import cordova.plugin.documentreader.Convert.bitmapToBase64
43
- import cordova.plugin.documentreader.Convert.byteArrayFromBase64
44
9
  import org.apache.cordova.CallbackContext
45
10
  import org.apache.cordova.CordovaPlugin
46
11
  import org.apache.cordova.PluginResult
47
12
  import org.json.JSONArray
48
- import org.json.JSONObject
49
13
 
14
+ val eventCallbackIds = mutableMapOf<String, String>()
50
15
  lateinit var callbackContext: CallbackContext
51
16
 
52
17
  lateinit var args: JSONArray
@@ -61,7 +26,7 @@ val lifecycle: Lifecycle
61
26
  fun sendEvent(event: String, data: Any? = "") {
62
27
  // These events are not working in cordova and ionic because they don't have a method
63
28
  // associated with it. Callbacks are set automatically right after init.
64
- val skippedEvents = listOf(eventVideoEncoderCompletion, onCustomButtonTappedEvent)
29
+ val skippedEvents = listOf(videoEncoderCompletionEvent, onCustomButtonTappedEvent)
65
30
  if (skippedEvents.contains(event)) return
66
31
  val pluginResult = when (data) {
67
32
  is Boolean -> PluginResult(PluginResult.Status.OK, data)
@@ -70,7 +35,7 @@ fun sendEvent(event: String, data: Any? = "") {
70
35
  var result = data.toSendable() as String?
71
36
  // Allows user to determine which event fired when there are more
72
37
  // than one event associated with the function
73
- val singleEvents = listOf(eventDatabaseProgress, eventCompletion, "")
38
+ val singleEvents = listOf(databaseProgressEvent, completionEvent, "")
74
39
  if (!singleEvents.contains(event)) result = event + result
75
40
  PluginResult(PluginResult.Status.OK, result)
76
41
  }
@@ -84,6 +49,11 @@ fun <T> argsNullable(index: Int): T? = if (args.get(index).toString() != "null")
84
49
  args.get(index) as T
85
50
  } else null
86
51
 
52
+ fun requestPermissions(@Suppress("UNUSED_PARAMETER") activity: Activity, permissions: Array<String>, requestCode: Int) = binding.cordova.requestPermissions(binding, requestCode, permissions)
53
+ fun startActivityForResult(@Suppress("UNUSED_PARAMETER") activity: Activity, intent: Intent, requestCode: Int) = binding.cordova.startActivityForResult(binding, intent, requestCode)
54
+ fun myOnRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) = onRequestPermissionsResult(requestCode, permissions, grantResults)
55
+ fun myOnActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) = onActivityResult(requestCode, resultCode, intent)
56
+
87
57
  class DocumentReader : CordovaPlugin() {
88
58
  init {
89
59
  binding = this
@@ -102,453 +72,16 @@ class DocumentReader : CordovaPlugin() {
102
72
  myOnRequestPermissionsResult(requestCode, permissions, grantResults)
103
73
  }
104
74
 
105
- override fun execute(action: String, args: JSONArray, callbackContext: CallbackContext): Boolean {
106
- exec(args, callbackContext)
107
- return true
108
- }
109
- }
110
-
111
- fun requestPermissions(@Suppress("UNUSED_PARAMETER") activity: Activity, permissions: Array<String>, requestCode: Int) = binding.cordova.requestPermissions(binding, requestCode, permissions)
112
- fun startActivityForResult(@Suppress("UNUSED_PARAMETER") activity: Activity, intent: Intent, requestCode: Int) = binding.cordova.startActivityForResult(binding, intent, requestCode)
113
- fun myOnRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) = onRequestPermissionsResult(requestCode, permissions, grantResults)
114
- fun myOnActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) = onActivityResult(requestCode, resultCode, intent)
115
-
116
- fun exec(arguments: JSONArray, tempContext: CallbackContext) {
117
- args = arguments
118
- callbackContext = tempContext
119
- val action = args.remove(0) as String
120
- val callback = object : Callback {
121
- override fun error(message: String) = callbackContext.error(message)
122
- override fun success(data: Any?) = sendEvent("", data)
123
- }
124
- when (action) {
125
- "getDocumentReaderIsReady" -> getDocumentReaderIsReady(callback)
126
- "getDocumentReaderStatus" -> getDocumentReaderStatus(callback)
127
- "getRfidSessionStatus" -> getRfidSessionStatus(callback)
128
- "setRfidSessionStatus" -> setRfidSessionStatus(callback)
129
- "getTag" -> getTag(callback)
130
- "setTag" -> setTag(argsNullable(0))
131
- "getTenant" -> getTenant(callback)
132
- "setTenant" -> setTenant(argsNullable(0))
133
- "getEnv" -> getEnv(callback)
134
- "setEnv" -> setEnv(argsNullable(0))
135
- "getFunctionality" -> getFunctionality(callback)
136
- "setFunctionality" -> setFunctionality(args(0))
137
- "getProcessParams" -> getProcessParams(callback)
138
- "setProcessParams" -> setProcessParams(args(0))
139
- "getCustomization" -> getCustomization(callback)
140
- "setCustomization" -> setCustomization(args(0))
141
- "getRfidScenario" -> getRfidScenario(callback)
142
- "setRfidScenario" -> setRfidScenario(args(0))
143
- "resetConfiguration" -> resetConfiguration()
144
- "initializeReader" -> initializeReader(callback, args(0))
145
- "initializeReaderWithBleDeviceConfig" -> initializeReaderWithBleDeviceConfig(callback, args(0))
146
- "deinitializeReader" -> deinitializeReader(callback)
147
- "prepareDatabase" -> prepareDatabase(callback, args(0))
148
- "removeDatabase" -> removeDatabase(callback)
149
- "runAutoUpdate" -> runAutoUpdate(callback, args(0))
150
- "cancelDBUpdate" -> cancelDBUpdate(callback)
151
- "checkDatabaseUpdate" -> checkDatabaseUpdate(callback, args(0))
152
- "scan" -> scan(args(0))
153
- "recognize" -> recognize(args(0))
154
- "startNewPage" -> startNewPage(callback)
155
- "stopScanner" -> stopScanner(callback)
156
- "startRFIDReader" -> startRFIDReader(args(0), args(1), args(2))
157
- "readRFID" -> readRFID(args(0), args(1), args(2))
158
- "stopRFIDReader" -> stopRFIDReader(callback)
159
- "providePACertificates" -> providePACertificates(callback, argsNullable(0))
160
- "provideTACertificates" -> provideTACertificates(callback, argsNullable(0))
161
- "provideTASignature" -> provideTASignature(callback, args(0))
162
- "setTCCParams" -> setTCCParams(callback, args(0))
163
- "addPKDCertificates" -> addPKDCertificates(callback, args(0))
164
- "clearPKDCertificates" -> clearPKDCertificates(callback)
165
- "startNewSession" -> startNewSession(callback)
166
- "connectBluetoothDevice" -> connectBluetoothDevice(callback)
167
- "setLocalizationDictionary" -> setLocalizationDictionary(args(0))
168
- "getLicense" -> getLicense(callback)
169
- "getAvailableScenarios" -> getAvailableScenarios(callback)
170
- "getIsRFIDAvailableForUse" -> getIsRFIDAvailableForUse(callback)
171
- "isAuthenticatorAvailableForUse" -> isAuthenticatorAvailableForUse(callback)
172
- "isAuthenticatorRFIDAvailableForUse" -> isAuthenticatorRFIDAvailableForUse(callback)
173
- "getDocReaderVersion" -> getDocReaderVersion(callback)
174
- "getDocReaderDocumentsDatabase" -> getDocReaderDocumentsDatabase(callback)
175
- "textFieldValueByType" -> textFieldValueByType(callback, args(0), args(1))
176
- "textFieldValueByTypeLcid" -> textFieldValueByTypeLcid(callback, args(0), args(1), args(2))
177
- "textFieldValueByTypeSource" -> textFieldValueByTypeSource(callback, args(0), args(1), args(2))
178
- "textFieldValueByTypeLcidSource" -> textFieldValueByTypeLcidSource(callback, args(0), args(1), args(2), args(3))
179
- "textFieldValueByTypeSourceOriginal" -> textFieldValueByTypeSourceOriginal(callback, args(0), args(1), args(2), args(3))
180
- "textFieldValueByTypeLcidSourceOriginal" -> textFieldValueByTypeLcidSourceOriginal(callback, args(0), args(1), args(2), args(3), args(4))
181
- "textFieldByType" -> textFieldByType(callback, args(0), args(1))
182
- "textFieldByTypeLcid" -> textFieldByTypeLcid(callback, args(0), args(1), args(2))
183
- "graphicFieldByTypeSource" -> graphicFieldByTypeSource(callback, args(0), args(1), args(2))
184
- "graphicFieldByTypeSourcePageIndex" -> graphicFieldByTypeSourcePageIndex(callback, args(0), args(1), args(2), args(3))
185
- "graphicFieldByTypeSourcePageIndexLight" -> graphicFieldByTypeSourcePageIndexLight(callback, args(0), args(1), args(2), args(3), args(4))
186
- "graphicFieldImageByType" -> graphicFieldImageByType(callback, args(0), args(1))
187
- "graphicFieldImageByTypeSource" -> graphicFieldImageByTypeSource(callback, args(0), args(1), args(2))
188
- "graphicFieldImageByTypeSourcePageIndex" -> graphicFieldImageByTypeSourcePageIndex(callback, args(0), args(1), args(2), args(3))
189
- "graphicFieldImageByTypeSourcePageIndexLight" -> graphicFieldImageByTypeSourcePageIndexLight(callback, args(0), args(1), args(2), args(3), args(4))
190
- "containers" -> containers(callback, args(0), args(1))
191
- "encryptedContainers" -> encryptedContainers(callback, args(0))
192
- "finalizePackage" -> finalizePackage(callback)
193
- "endBackendTransaction" -> endBackendTransaction(callback)
194
- "getTranslation" -> getTranslation(callback, args(0), args(1))
195
- }
196
- }
197
-
198
- inline fun <reified T> args(index: Int) = argsNullable<T>(index)!!
199
- interface Callback {
200
- fun success(data: Any? = "")
201
- fun error(message: String)
202
- }
203
-
204
- const val eventCompletion = "completion"
205
- const val eventDatabaseProgress = "database_progress"
206
-
207
- const val rfidOnProgressEvent = "rfidOnProgressCompletion"
208
- const val rfidOnChipDetectedEvent = "rfidOnChipDetectedEvent"
209
- const val rfidOnRetryReadChipEvent = "rfidOnRetryReadChipEvent"
210
-
211
- const val eventPACertificateCompletion = "pa_certificate_completion"
212
- const val eventTACertificateCompletion = "ta_certificate_completion"
213
- const val eventTASignatureCompletion = "ta_signature_completion"
214
-
215
- const val eventVideoEncoderCompletion = "video_encoder_completion"
216
- const val onCustomButtonTappedEvent = "onCustomButtonTappedEvent"
217
-
218
- fun getDocumentReaderIsReady(callback: Callback) = callback.success(Instance().isReady)
219
-
220
- fun getDocumentReaderStatus(callback: Callback) = callback.success(Instance().status)
221
-
222
- fun getRfidSessionStatus(callback: Callback) = callback.error("getRfidSessionStatus() is an ios-only method")
223
-
224
- fun setRfidSessionStatus(callback: Callback) = callback.error("setRfidSessionStatus() is an ios-only method")
225
-
226
- fun getTag(callback: Callback) = callback.success(Instance().tag)
227
-
228
- fun setTag(tag: String?) = tag.let { Instance().tag = it }
229
-
230
- fun getTenant(callback: Callback) = callback.success(Instance().tenant)
231
-
232
- fun setTenant(tag: String?) = tag.let { Instance().tenant = it }
233
-
234
- fun getEnv(callback: Callback) = callback.success(Instance().env)
235
-
236
- fun setEnv(tag: String?) = tag.let { Instance().env = it }
237
-
238
- fun getFunctionality(callback: Callback) = callback.success(getFunctionality(Instance().functionality()))
239
-
240
- fun setFunctionality(functionality: JSONObject) = setFunctionality(Instance().functionality(), functionality)
241
-
242
- fun getProcessParams(callback: Callback) = callback.success(getProcessParams(Instance().processParams()))
243
-
244
- fun setProcessParams(processParams: JSONObject) = setProcessParams(Instance().processParams(), processParams)
245
-
246
- fun getCustomization(callback: Callback) = callback.success(getCustomization(Instance().customization()))
247
-
248
- fun setCustomization(customization: JSONObject) = setCustomization(Instance().customization(), customization, context)
249
-
250
- fun getRfidScenario(callback: Callback) = callback.success(getRfidScenario(Instance().rfidScenario()))
251
-
252
- fun setRfidScenario(rfidScenario: JSONObject) = setRfidScenario(Instance().rfidScenario(), rfidScenario)
253
-
254
- fun resetConfiguration() = Instance().resetConfiguration()
255
-
256
- fun initializeReader(callback: Callback, config: JSONObject) = Instance().initializeReader(context, docReaderConfigFromJSON(config), getInitCompletion(callback))
257
-
258
- fun initializeReaderWithBleDeviceConfig(callback: Callback, config: JSONObject) = Instance().initializeReader(context, bleDeviceConfigFromJSON(config), getInitCompletion(callback))
259
-
260
- fun deinitializeReader(callback: Callback) {
261
- Instance().deinitializeReader()
262
- callback.success()
263
- }
264
-
265
- fun prepareDatabase(callback: Callback, databaseID: String) = Instance().prepareDatabase(context, databaseID, getPrepareCompletion(callback))
266
-
267
- fun removeDatabase(callback: Callback) = callback.success(Instance().removeDatabase(context))
268
-
269
- fun runAutoUpdate(callback: Callback, databaseID: String) = Instance().runAutoUpdate(context, databaseID, getPrepareCompletion(callback))
270
-
271
- fun cancelDBUpdate(callback: Callback) = callback.success(Instance().cancelDBUpdate(context))
272
-
273
- fun checkDatabaseUpdate(callback: Callback, databaseID: String) = Instance().checkDatabaseUpdate(context, databaseID) { callback.success(generateDocReaderDocumentsDatabase(it)) }
274
-
275
- fun scan(config: JSONObject) {
276
- stopBackgroundRFID()
277
- Instance().showScanner(context, scannerConfigFromJSON(config), completion)
278
- }
279
-
280
- fun recognize(config: JSONObject) {
281
- stopBackgroundRFID()
282
- Instance().recognize(recognizeConfigFromJSON(config), completion)
283
- }
284
-
285
- fun startNewPage(callback: Callback) {
286
- Instance().startNewPage()
287
- callback.success()
288
- }
289
-
290
- fun stopScanner(callback: Callback) {
291
- Instance().stopScanner(context)
292
- callback.success()
293
- }
294
-
295
- fun startRFIDReader(onRequestPACertificates: Boolean, onRequestTACertificates: Boolean, onRequestTASignature: Boolean) {
296
- stopBackgroundRFID()
297
- requestType = RfidReaderRequestType(
298
- onRequestPACertificates,
299
- onRequestTACertificates,
300
- onRequestTASignature
301
- )
302
- Instance().startRFIDReader(context, rfidReaderCompletion, requestType.getRfidReaderRequest())
303
- }
304
-
305
- fun readRFID(onRequestPACertificates: Boolean, onRequestTACertificates: Boolean, onRequestTASignature: Boolean) {
306
- requestType = RfidReaderRequestType(
307
- onRequestPACertificates,
308
- onRequestTACertificates,
309
- onRequestTASignature
310
- )
311
- startForegroundDispatch()
312
- }
313
-
314
- fun stopRFIDReader(callback: Callback) {
315
- Instance().stopRFIDReader(context)
316
- stopBackgroundRFID()
317
- callback.success()
318
- }
319
-
320
- fun providePACertificates(callback: Callback, certificates: JSONArray?) {
321
- paCertificateCompletion!!.onCertificatesReceived(arrayFromJSON(certificates, ::pkdCertificateFromJSON, arrayOfNulls(certificates?.length() ?: 0)))
322
- callback.success()
323
- }
324
-
325
- fun provideTACertificates(callback: Callback, certificates: JSONArray?) {
326
- taCertificateCompletion!!.onCertificatesReceived(arrayFromJSON(certificates, ::pkdCertificateFromJSON, arrayOfNulls(certificates?.length() ?: 0)))
327
- callback.success()
328
- }
329
-
330
- fun provideTASignature(callback: Callback, signature: String?) {
331
- taSignatureCompletion!!.onSignatureReceived(byteArrayFromBase64(signature))
332
- callback.success()
333
- }
334
-
335
- fun setTCCParams(callback: Callback, params: JSONObject) {
336
- Instance().setTccParams(tccParamsFromJSON(params)) { success, error ->
337
- callback.success(generateSuccessCompletion(success, error))
338
- }
339
- }
340
-
341
- fun addPKDCertificates(callback: Callback, certificates: JSONArray) {
342
- Instance().addPKDCertificates(listFromJSON(certificates, ::pkdCertificateFromJSON)!!)
343
- callback.success()
344
- }
345
-
346
- fun clearPKDCertificates(callback: Callback) {
347
- Instance().clearPKDCertificates()
348
- callback.success()
349
- }
350
-
351
- fun startNewSession(callback: Callback) {
352
- Instance().startNewSession()
353
- callback.success()
354
- }
355
-
356
- fun setLocalizationDictionary(dictionary: JSONObject) {
357
- localizationCallbacks = LocalizationCallbacks { if (dictionary.has(it)) dictionary.getString(it) else null }
358
- Instance().setLocalizationCallback(localizationCallbacks!!)
359
- }
360
-
361
- fun getLicense(callback: Callback) = callback.success(generateLicense(Instance().license()))
362
-
363
- fun getAvailableScenarios(callback: Callback) {
364
- val scenarios: MutableList<DocumentReaderScenario> = ArrayList()
365
- for (scenario: DocumentReaderScenario in Instance().availableScenarios)
366
- scenarios.add(CoreScenarioUtil.getScenario(scenario.name))
367
- callback.success(generateList(scenarios, ::generateDocumentReaderScenario))
368
- }
369
-
370
- fun getIsRFIDAvailableForUse(callback: Callback) = callback.success(Instance().isRFIDAvailableForUse)
371
-
372
- fun isAuthenticatorAvailableForUse(callback: Callback) = callback.success(Instance().isAuthenticatorAvailableForUse)
373
-
374
- fun isAuthenticatorRFIDAvailableForUse(callback: Callback) = callback.success(Instance().isAuthenticatorRFIDAvailableForUse)
375
-
376
- fun getDocReaderVersion(callback: Callback) = callback.success(generateDocReaderVersion(Instance().version))
377
-
378
- fun getDocReaderDocumentsDatabase(callback: Callback) = callback.success(Instance().version?.let { generateDocReaderDocumentsDatabase(it.database) })
379
-
380
- fun textFieldValueByType(callback: Callback, raw: String, fieldType: Int) = callback.success(fromRawResults(raw).getTextFieldValueByType(fieldType))
381
-
382
- fun textFieldValueByTypeLcid(callback: Callback, raw: String, fieldType: Int, lcid: Int) = callback.success(fromRawResults(raw).getTextFieldValueByType(fieldType, lcid))
383
-
384
- fun textFieldValueByTypeSource(callback: Callback, raw: String, fieldType: Int, source: Int) = callback.success(fromRawResults(raw).getTextFieldValueByTypeAndSource(fieldType, source))
385
-
386
- fun textFieldValueByTypeLcidSource(callback: Callback, raw: String, fieldType: Int, lcid: Int, source: Int) = callback.success(fromRawResults(raw).getTextFieldValueByType(fieldType, lcid, source))
387
-
388
- fun textFieldValueByTypeSourceOriginal(callback: Callback, raw: String, fieldType: Int, source: Int, original: Boolean) = callback.success(fromRawResults(raw).getTextFieldValueByTypeAndSource(fieldType, source, original))
389
-
390
- fun textFieldValueByTypeLcidSourceOriginal(callback: Callback, raw: String, fieldType: Int, lcid: Int, source: Int, original: Boolean) = callback.success(fromRawResults(raw).getTextFieldValueByType(fieldType, lcid, source, original))
391
-
392
- fun textFieldByType(callback: Callback, raw: String, fieldType: Int) = callback.success(generateDocumentReaderTextField(fromRawResults(raw).getTextFieldByType(fieldType), context))
393
-
394
- fun textFieldByTypeLcid(callback: Callback, raw: String, fieldType: Int, lcid: Int) = callback.success(generateDocumentReaderTextField(fromRawResults(raw).getTextFieldByType(fieldType, lcid), context))
395
-
396
- fun graphicFieldByTypeSource(callback: Callback, raw: String, fieldType: Int, source: Int) = callback.success(generateDocumentReaderGraphicField(fromRawResults(raw).getGraphicFieldByType(fieldType, source), context))
397
-
398
- fun graphicFieldByTypeSourcePageIndex(callback: Callback, raw: String, fieldType: Int, source: Int, pageIndex: Int) = callback.success(generateDocumentReaderGraphicField(fromRawResults(raw).getGraphicFieldByType(fieldType, source, pageIndex), context))
399
-
400
- fun graphicFieldByTypeSourcePageIndexLight(callback: Callback, raw: String, fieldType: Int, source: Int, pageIndex: Int, light: Int) = callback.success(generateDocumentReaderGraphicField(fromRawResults(raw).getGraphicFieldByType(fieldType, source, pageIndex, light), context))
401
-
402
- fun graphicFieldImageByType(callback: Callback, raw: String, fieldType: Int) = callback.success(bitmapToBase64(fromRawResults(raw).getGraphicFieldImageByType(fieldType)))
403
-
404
- fun graphicFieldImageByTypeSource(callback: Callback, raw: String, fieldType: Int, source: Int) = callback.success(bitmapToBase64(fromRawResults(raw).getGraphicFieldImageByType(fieldType, source)))
405
-
406
- fun graphicFieldImageByTypeSourcePageIndex(callback: Callback, raw: String, fieldType: Int, source: Int, pageIndex: Int) = callback.success(bitmapToBase64(fromRawResults(raw).getGraphicFieldImageByType(fieldType, source, pageIndex)))
407
-
408
- fun graphicFieldImageByTypeSourcePageIndexLight(callback: Callback, raw: String, fieldType: Int, source: Int, pageIndex: Int, light: Int) = callback.success(bitmapToBase64(fromRawResults(raw).getGraphicFieldImageByType(fieldType, source, pageIndex, light)))
409
-
410
- fun containers(callback: Callback, raw: String, resultType: JSONArray) = callback.success(fromRawResults(raw).getContainers(resultType.toIntArray()!!))
411
-
412
- fun encryptedContainers(callback: Callback, raw: String) = callback.success(fromRawResults(raw).encryptedContainers)
413
-
414
- fun finalizePackage(callback: Callback) = Instance().finalizePackage { action, info, error -> callback.success(generateFinalizePackageCompletion(action, info, error)) }
415
-
416
- fun endBackendTransaction(callback: Callback) {
417
- Instance().endBackendTransaction()
418
- callback.success()
419
- }
420
-
421
- fun getTranslation(callback: Callback, className: String, value: Int) = when (className) {
422
- "RFIDErrorCodes" -> callback.success(eRFID_ErrorCodes.getTranslation(context, value))
423
- "LDSParsingErrorCodes" -> callback.success(eLDS_ParsingErrorCodes.getTranslation(context, value))
424
- "LDSParsingNotificationCodes" -> callback.success(eLDS_ParsingNotificationCodes.getTranslation(context, value))
425
- "ImageQualityCheckType" -> callback.success(eImageQualityCheckType.getTranslation(context, value))
426
- "RFIDDataFileType" -> callback.success(eRFID_DataFile_Type.getTranslation(context, value))
427
- "VisualFieldType" -> callback.success(eVisualFieldType.getTranslation(context, value))
428
- "LCID" -> callback.success(LCID.getTranslation(context, value))
429
- else -> null
430
- }
431
-
432
- val completed = { action: Int, results: DocumentReaderResults?, error: DocumentReaderException? ->
433
- sendEvent(eventCompletion, generateCompletion(action, results, error, context))
434
- if ((action == DocReaderAction.ERROR) || (action == DocReaderAction.CANCEL) || ((action == DocReaderAction.COMPLETE) && (results?.rfidResult == 1)))
435
- stopBackgroundRFID()
436
- }
437
-
438
- val completion = IDocumentReaderCompletion(completed)
439
-
440
- val rfidReaderCompletion = object : IRfidReaderCompletion() {
441
- override fun onCompleted(action: Int, results: DocumentReaderResults?, error: DocumentReaderException?): Unit = completed(action, results, error)
442
- override fun onChipDetected(): Unit = sendEvent(rfidOnChipDetectedEvent)
443
- override fun onRetryReadChip(error: DocReaderRfidException) = sendEvent(rfidOnRetryReadChipEvent, generateRegulaException(error))
444
- override fun onProgress(notification: DocumentReaderNotification) = sendEvent(rfidOnProgressEvent, generateDocumentReaderNotification(notification))
445
- }
446
-
447
- fun getPrepareCompletion(callback: Callback) = object : IDocumentReaderPrepareDbCompletion() {
448
- override fun onPrepareProgressChanged(progress: PrepareProgress) = sendEvent(eventDatabaseProgress, generatePrepareProgress(progress))
449
- override fun onPrepareCompleted(success: Boolean, error: DocumentReaderException?) = callback.success(generateSuccessCompletion(success, error))
450
- }
451
-
452
- fun getInitCompletion(callback: Callback) = IDocumentReaderInitCompletion { success, error ->
453
- if (success) {
454
- Instance().setVideoEncoderCompletion { _, file -> sendEvent(eventVideoEncoderCompletion, file.path) }
455
- Instance().setOnClickListener { sendEvent(onCustomButtonTappedEvent, it.tag) }
456
- }
457
- callback.success(generateSuccessCompletion(success, error))
458
- }
459
-
460
- var paCertificateCompletion: IRfidPKDCertificateCompletion? = null
461
- var taCertificateCompletion: IRfidPKDCertificateCompletion? = null
462
- var taSignatureCompletion: IRfidTASignatureCompletion? = null
463
-
464
- class RfidReaderRequestType(
465
- val doPACertificates: Boolean,
466
- val doTACertificates: Boolean,
467
- val doTASignature: Boolean
468
- ) {
469
- private val onRequestPACertificates = IRfidPACertificates { serialNumber, issuer, completion ->
470
- paCertificateCompletion = completion
471
- sendEvent(eventPACertificateCompletion, generatePACertificateCompletion(serialNumber, issuer))
472
- }
473
- private val onRequestTACertificates = IRfidTACertificates { keyCAR, completion ->
474
- taCertificateCompletion = completion
475
- sendEvent(eventTACertificateCompletion, keyCAR)
476
- }
477
- private val onRequestTASignature = IRfidTASignature { challenge, completion ->
478
- taSignatureCompletion = completion
479
- sendEvent(eventTASignatureCompletion, generateTAChallenge(challenge))
480
- }
481
-
482
- fun getRfidReaderRequest(): IRfidReaderRequest? = when {
483
- !doPACertificates && !doTACertificates && doTASignature -> IRfidReaderRequest(onRequestTASignature)
484
- !doPACertificates && doTACertificates && !doTASignature -> IRfidReaderRequest(onRequestTACertificates)
485
- !doPACertificates && doTACertificates && doTASignature -> IRfidReaderRequest(onRequestTACertificates, onRequestTASignature)
486
- doPACertificates && !doTACertificates && !doTASignature -> IRfidReaderRequest(onRequestPACertificates)
487
- doPACertificates && !doTACertificates && doTASignature -> IRfidReaderRequest(onRequestPACertificates, onRequestTASignature)
488
- doPACertificates && doTACertificates && !doTASignature -> IRfidReaderRequest(onRequestPACertificates, onRequestTACertificates)
489
- doPACertificates && doTACertificates && doTASignature -> IRfidReaderRequest(onRequestPACertificates, onRequestTACertificates, onRequestTASignature)
490
- else -> null
491
- }
492
- }
493
-
494
- var requestType = RfidReaderRequestType(
495
- doPACertificates = false,
496
- doTACertificates = false,
497
- doTASignature = false
498
- )
499
-
500
- @Suppress("DEPRECATION")
501
- fun newIntent(intent: Intent): Boolean {
502
- if (intent.action != NfcAdapter.ACTION_TECH_DISCOVERED) return false
503
- Instance().readRFID(
504
- IsoDep.get(intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)),
505
- rfidReaderCompletion,
506
- requestType.getRfidReaderRequest()
507
- )
508
- return true
509
- }
510
-
511
- var backgroundRFIDEnabled = false
512
- lateinit var lifecycleObserver: LifecycleEventObserver
513
-
514
- fun startForegroundDispatch() {
515
- backgroundRFIDEnabled = true
516
- val filters: Array<IntentFilter?> = arrayOfNulls(1)
517
- filters[0] = IntentFilter()
518
- filters[0]!!.addAction(NfcAdapter.ACTION_TECH_DISCOVERED)
519
- filters[0]!!.addCategory(Intent.CATEGORY_DEFAULT)
520
- val techList = arrayOf(arrayOf("android.nfc.tech.IsoDep"))
521
- val intent = Intent(activity, activity.javaClass)
522
- val flag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) PendingIntent.FLAG_MUTABLE else 0
523
- val pendingIntent = PendingIntent.getActivity(activity, 0, intent, flag)
524
-
525
- if (lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED))
526
- enableForegroundDispatch(pendingIntent, filters, techList)
527
- lifecycleObserver = LifecycleEventObserver { _, event ->
528
- if (backgroundRFIDEnabled) when (event) {
529
- Lifecycle.Event.ON_RESUME -> enableForegroundDispatch(pendingIntent, filters, techList)
530
- Lifecycle.Event.ON_PAUSE -> disableForegroundDispatch()
531
- else -> Unit
75
+ override fun execute(action: String, arguments: JSONArray, cb: CallbackContext): Boolean {
76
+ callbackContext = cb
77
+ args = arguments
78
+ val method = args.remove(0) as String
79
+ if (method == "setEvent") eventCallbackIds[args(0)] = callbackContext.callbackId
80
+ try {
81
+ methodCall(method) { data: Any? -> sendEvent("", data) }
82
+ } catch (error: Exception) {
83
+ Log.e("REGULA", "Caught exception in \"$method\" function:", error)
532
84
  }
85
+ return true
533
86
  }
534
- activity.runOnUiThread { lifecycle.addObserver(lifecycleObserver) }
535
- }
536
-
537
- fun enableForegroundDispatch(
538
- pendingIntent: PendingIntent,
539
- filters: Array<IntentFilter?>,
540
- techList: Array<Array<String>>
541
- ) = NfcAdapter.getDefaultAdapter(context).enableForegroundDispatch(activity, pendingIntent, filters, techList)
542
-
543
- fun disableForegroundDispatch() = NfcAdapter.getDefaultAdapter(context).disableForegroundDispatch(activity)
544
-
545
- fun stopBackgroundRFID() {
546
- if (!backgroundRFIDEnabled) return
547
- backgroundRFIDEnabled = false
548
- if (lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED))
549
- disableForegroundDispatch()
550
- activity.runOnUiThread { lifecycle.removeObserver(lifecycleObserver) }
551
87
  }
552
-
553
- // Weak references
554
- var localizationCallbacks: LocalizationCallbacks? = null