From 31e7fc8fe148b1f48085040d27dc12e12283286d Mon Sep 17 00:00:00 2001 From: Akash Date: Wed, 23 Apr 2025 14:23:57 +0530 Subject: [PATCH] feat: crash fixed for some device with null pointer --- .../DigioReactNativeModule.java | 18 +++++++++++++++--- example/src/App.tsx | 4 ++-- package.json | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/android/src/main/java/com/digioreactnative/DigioReactNativeModule.java b/android/src/main/java/com/digioreactnative/DigioReactNativeModule.java index c1a64b9..5bf3008 100644 --- a/android/src/main/java/com/digioreactnative/DigioReactNativeModule.java +++ b/android/src/main/java/com/digioreactnative/DigioReactNativeModule.java @@ -51,6 +51,7 @@ public class DigioReactNativeModule extends ReactContextBaseJavaModule implement public static final int DIGIO_ACTIVITY = 73457843; private Promise resultPromise; private boolean isReceiverRegistered = false; + private boolean isResultHandled = false; private BroadcastReceiver eventBroadcastReceiver = new BroadcastReceiver() { @@ -81,9 +82,19 @@ public void onReceive(Context context, Intent intent) { ActivityEventListener activityEventListener = new ActivityEventListener() { @Override public void onActivityResult(Activity activity, int requestCode, int resultCode, @Nullable Intent intent) { - if (requestCode == DIGIO_ACTIVITY) { - int responseCode = intent.getIntExtra("responseCode", 0); - onNativeActivityResult(responseCode, intent); + if (requestCode == DIGIO_ACTIVITY && !isResultHandled) { + isResultHandled = true; + if (intent != null) { + int responseCode = 0; + if (intent.hasExtra("responseCode")) { + responseCode = intent.getIntExtra("responseCode", 0); + }else{ + responseCode = intent.getIntExtra("errorCode", 0); + } + onNativeActivityResult(responseCode, intent); + }else{ + onNativeActivityResult(resultCode, null); + } } } @@ -249,6 +260,7 @@ public void start(String documentId, String identifier, String tokenId, Readable digioConfig.setAdditionalData(additionalDataMap); intent.putExtra("config", digioConfig); + isResultHandled = false; this.getCurrentActivity().startActivityForResult(intent, DIGIO_ACTIVITY); } catch (Exception e) { // Throws DigioException if WorkflowResponseListener is not implemented/passed, or diff --git a/example/src/App.tsx b/example/src/App.tsx index c49ee9b..0cef44a 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -21,9 +21,9 @@ export default function App() { digio .start( - 'DID25042217573519794QGI9P27RLKLF', + 'KID250423131507165T4ALP7UIDB4UFZ', 'akash.kumar@digio.in', - 'GWT250422175735425I7RZLI1K4OTV9S' + 'GWT250423131507194T9AD9V4FENFHYS' ) .then((res) => { console.log(res); diff --git a/package.json b/package.json index ebfc613..77c4c53 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@digiotech/react-native", - "version": "2.0.3", + "version": "2.0.4", "description": "SDK for invoking client side journey for any of Digio request", "main": "lib/commonjs/index", "module": "lib/module/index",