11package com .regula .documentreader ;
22
3+ import android .annotation .SuppressLint ;
34import android .app .Activity ;
45import android .app .PendingIntent ;
56import android .content .Context ;
2930import com .regula .documentreader .api .completions .IRfidTASignatureCompletion ;
3031import com .regula .documentreader .api .enums .DocReaderAction ;
3132import com .regula .documentreader .api .errors .DocumentReaderException ;
33+ import com .regula .documentreader .api .params .DocReaderConfig ;
3234import com .regula .documentreader .api .params .ImageInputParam ;
3335import com .regula .documentreader .api .params .rfid .PKDCertificate ;
3436import com .regula .documentreader .api .params .rfid .authorization .PAResourcesIssuer ;
3537import com .regula .documentreader .api .params .rfid .authorization .TAChallenge ;
3638import com .regula .documentreader .api .results .DocumentReaderResults ;
39+ import com .regula .documentreader .api .parser .DocReaderResultsJsonParser ;
3740
3841import org .json .JSONArray ;
3942import org .json .JSONException ;
4043import org .json .JSONObject ;
4144
4245import java .io .File ;
46+ import java .io .IOException ;
47+ import java .io .InputStream ;
4348import java .util .ArrayList ;
4449import java .util .List ;
4550
4651import static com .regula .documentreader .api .DocumentReader .Instance ;
4752
53+ import androidx .annotation .NonNull ;
54+
4855@ SuppressWarnings ({"ConstantConditions" , "RedundantSuppression" })
4956public class RNRegulaDocumentReaderModule extends ReactContextBaseJavaModule implements ActivityEventListener , LifecycleEventListener {
5057 private final static String prepareDatabaseProgressChangeEvent = "prepareDatabaseProgressChangeEvent" ;
@@ -181,6 +188,9 @@ public void error(String s) {
181188 };
182189 try {
183190 switch (action ) {
191+ case "initializeReaderAutomatically" :
192+ initializeReaderAutomatically (callback );
193+ break ;
184194 case "getAPIVersion" :
185195 getAPIVersion (callback );
186196 break ;
@@ -337,6 +347,9 @@ public void error(String s) {
337347 case "provideTASignature" :
338348 provideTASignature (callback , args (0 ));
339349 break ;
350+ case "parseCoreResults" :
351+ parseCoreResults (callback , args (0 ));
352+ break ;
340353 case "initializeReaderWithDatabasePath" :
341354 initializeReaderWithDatabasePath (callback , args (0 ), args (1 ));
342355 break ;
@@ -376,6 +389,7 @@ private void startForegroundDispatch(final Activity activity) {
376389 };
377390 Intent intent = new Intent (activity .getApplicationContext (), activity .getClass ());
378391 intent .setFlags (Intent .FLAG_ACTIVITY_SINGLE_TOP );
392+ @ SuppressLint ("UnspecifiedImmutableFlag" )
379393 PendingIntent pendingIntent = PendingIntent .getActivity (activity .getApplicationContext (), 0 , intent , 0 );
380394 NfcAdapter .getDefaultAdapter (getActivity ()).enableForegroundDispatch (activity , pendingIntent , filters , techList );
381395 }
@@ -387,10 +401,32 @@ private void stopBackgroundRFID() {
387401 backgroundRFIDEnabled = false ;
388402 }
389403
404+ private void initializeReaderAutomatically (Callback callback ) {
405+ if (!Instance ().isReady ())
406+ try {
407+ InputStream is = getContext ().getAssets ().open ("regula.license" );
408+ byte [] license = new byte [is .available ()];
409+ //noinspection ResultOfMethodCallIgnored
410+ is .read (license );
411+ Instance ().initializeReader (getContext (), new DocReaderConfig (license ), getInitCompletion (callback ));
412+ is .close ();
413+ } catch (IOException e ) {
414+ e .printStackTrace ();
415+ callback .error ("problem reading license(see logs)" );
416+ }
417+ else
418+ callback .success ("already initialized" );
419+ }
420+
390421 private void getAvailableScenarios (Callback callback ) throws JSONException {
391422 callback .success (JSONConstructor .generateList (Instance ().availableScenarios , JSONConstructor ::generateDocumentReaderScenario ).toString ());
392423 }
393424
425+ private void parseCoreResults (Callback callback , String json ) {
426+ DocumentReaderResults results = (DocumentReaderResults ) DocReaderResultsJsonParser .parseCoreResults (json ).get ("docReaderResults" );
427+ callback .success (JSONConstructor .generateDocumentReaderResults (results , getContext ()).toString ());
428+ }
429+
394430 private void getAPIVersion (Callback callback ) {
395431 callback .success (Instance ().version .api );
396432 }
@@ -471,27 +507,27 @@ private void licenseIsRfidAvailable(Callback callback) {
471507 }
472508
473509 private void getDocumentReaderIsReady (Callback callback ) {
474- callback .success (Instance ().getDocumentReaderIsReady ());
510+ callback .success (Instance ().isReady ());
475511 }
476512
477513 private void getDocumentReaderStatus (Callback callback ) {
478- callback .success (Instance ().getDocumentReaderStatus ());
514+ callback .success (Instance ().isReady ());
479515 }
480516
481517 private void isRFIDAvailableForUse (Callback callback ) {
482518 callback .success (Instance ().isRFIDAvailableForUse ());
483519 }
484520
485521 private void initializeReader (Callback callback , Object license ) {
486- if (!Instance ().getDocumentReaderIsReady ())
487- Instance ().initializeReader (getContext (), Base64 .decode (license .toString (), Base64 .DEFAULT ), getInitCompletion (callback ));
522+ if (!Instance ().isReady ())
523+ Instance ().initializeReader (getContext (), new DocReaderConfig ( Base64 .decode (license .toString (), Base64 .DEFAULT ) ), getInitCompletion (callback ));
488524 else
489525 callback .success ("already initialized" );
490526 }
491527
492528 private void initializeReaderWithDatabase (Callback callback , Object license , Object db ) {
493- if (!Instance ().getDocumentReaderIsReady ())
494- Instance ().initializeReader (getContext (), Base64 .decode (license .toString (), Base64 .DEFAULT ), Base64 .decode (db .toString (), Base64 .DEFAULT ), getInitCompletion (callback ));
529+ if (!Instance ().isReady ())
530+ Instance ().initializeReader (getContext (), new DocReaderConfig ( Base64 .decode (license .toString (), Base64 .DEFAULT ), Base64 .decode (db .toString (), Base64 .DEFAULT ) ), getInitCompletion (callback ));
495531 else
496532 callback .success ("already initialized" );
497533 }
@@ -593,9 +629,9 @@ private void stopScanner(Callback callback) {
593629 private void startRFIDReader (@ SuppressWarnings ("unused" ) Callback callback ) {
594630 stopBackgroundRFID ();
595631 IRfidReaderRequest delegate = null ;
596- if (rfidDelegate == RFIDDelegate .NO_PA )
632+ if (rfidDelegate == RFIDDelegate .NO_PA )
597633 delegate = getIRfidReaderRequestNoPA ();
598- if (rfidDelegate == RFIDDelegate .FULL )
634+ if (rfidDelegate == RFIDDelegate .FULL )
599635 delegate = getIRfidReaderRequest ();
600636 Instance ().startRFIDReader (getContext (), getCompletion (), delegate , getIRfidNotificationCompletion ());
601637 }
@@ -743,20 +779,20 @@ private IDocumentReaderInitCompletion getInitCompletion(Callback callback) {
743779 private IRfidReaderRequest getIRfidReaderRequest () {
744780 return new IRfidReaderRequest () {
745781 @ Override
746- public void onRequestPACertificates (byte [] serialNumber , PAResourcesIssuer issuer , IRfidPKDCertificateCompletion completion ) {
782+ public void onRequestPACertificates (byte [] serialNumber , PAResourcesIssuer issuer , @ NonNull IRfidPKDCertificateCompletion completion ) {
747783 paCertificateCompletion = completion ;
748784 completion .onCertificatesReceived (new PKDCertificate [0 ]);
749785 sendPACertificateCompletion (serialNumber , issuer );
750786 }
751787
752788 @ Override
753- public void onRequestTACertificates (String keyCAR , IRfidPKDCertificateCompletion completion ) {
789+ public void onRequestTACertificates (String keyCAR , @ NonNull IRfidPKDCertificateCompletion completion ) {
754790 taCertificateCompletion = completion ;
755791 sendTACertificateCompletion (keyCAR );
756792 }
757793
758794 @ Override
759- public void onRequestTASignature (TAChallenge challenge , IRfidTASignatureCompletion completion ) {
795+ public void onRequestTASignature (TAChallenge challenge , @ NonNull IRfidTASignatureCompletion completion ) {
760796 taSignatureCompletion = completion ;
761797 sendTASignatureCompletion (challenge );
762798 }
@@ -766,19 +802,19 @@ public void onRequestTASignature(TAChallenge challenge, IRfidTASignatureCompleti
766802 private IRfidReaderRequest getIRfidReaderRequestNoPA () {
767803 return new IRfidReaderRequest () {
768804 @ Override
769- public void onRequestPACertificates (byte [] serialNumber , PAResourcesIssuer issuer , IRfidPKDCertificateCompletion completion ) {
805+ public void onRequestPACertificates (byte [] serialNumber , PAResourcesIssuer issuer , @ NonNull IRfidPKDCertificateCompletion completion ) {
770806 paCertificateCompletion = null ;
771807 completion .onCertificatesReceived (new PKDCertificate [0 ]);
772808 }
773809
774810 @ Override
775- public void onRequestTACertificates (String keyCAR , IRfidPKDCertificateCompletion completion ) {
811+ public void onRequestTACertificates (String keyCAR , @ NonNull IRfidPKDCertificateCompletion completion ) {
776812 taCertificateCompletion = completion ;
777813 sendTACertificateCompletion (keyCAR );
778814 }
779815
780816 @ Override
781- public void onRequestTASignature (TAChallenge challenge , IRfidTASignatureCompletion completion ) {
817+ public void onRequestTASignature (TAChallenge challenge , @ NonNull IRfidTASignatureCompletion completion ) {
782818 taSignatureCompletion = completion ;
783819 sendTASignatureCompletion (challenge );
784820 }
0 commit comments