From e2cb142c263d2c6d5b77f83c6bef45f0abf8e724 Mon Sep 17 00:00:00 2001 From: Atar Avraham Date: Wed, 3 Feb 2021 17:03:46 +0200 Subject: [PATCH 1/2] Safe sending js event --- .../core/notification/PushNotification.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java index 93a3dfe37..e425972c0 100644 --- a/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java +++ b/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java @@ -17,7 +17,6 @@ import androidx.core.text.HtmlCompat; import com.facebook.react.bridge.ReactContext; -import com.wix.reactnativenotifications.Defs; import com.wix.reactnativenotifications.R; import com.wix.reactnativenotifications.core.AppLaunchHelper; import com.wix.reactnativenotifications.core.AppLifecycleFacade; @@ -75,11 +74,14 @@ protected PushNotification(Context context, Bundle bundle, AppLifecycleFacade ap } @Override - public void onReceived() throws InvalidNotificationException { - if (!mAppLifecycleFacade.isAppVisible()) { + public void onReceived() { + boolean hasActiveCatalystInstance = mAppLifecycleFacade.getRunningReactContext().hasActiveCatalystInstance(); + if (!mAppLifecycleFacade.isAppVisible() || !hasActiveCatalystInstance) { postNotification(null); } - notifyReceivedToJS(); + if (hasActiveCatalystInstance) { + notifyReceivedToJS(); + } } @Override @@ -139,17 +141,13 @@ protected void dispatchImmediately() { } protected void dispatchUponVisibility() { - mAppLifecycleFacade.addVisibilityListener(getIntermediateAppVisibilityListener()); + mAppLifecycleFacade.addVisibilityListener(mAppVisibilityListener); // Make the app visible so that we'll dispatch the notification opening when visibility changes to 'true' (see // above listener registration). launchOrResumeApp(); } - protected AppVisibilityListener getIntermediateAppVisibilityListener() { - return mAppVisibilityListener; - } - protected PendingIntent getCTAPendingIntent(int notificationId) { final Intent cta = new Intent(mContext, ProxyService.class); mNotificationProps.setId(notificationId); From a1cc13e1e34a4ddf30e5cc0c7dcf32645a8ca787 Mon Sep 17 00:00:00 2001 From: Atar Avraham Date: Wed, 3 Feb 2021 17:28:43 +0200 Subject: [PATCH 2/2] Add null check to ReactContext --- .../core/notification/PushNotification.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java index e425972c0..5f53a2f8e 100644 --- a/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java +++ b/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java @@ -75,7 +75,8 @@ protected PushNotification(Context context, Bundle bundle, AppLifecycleFacade ap @Override public void onReceived() { - boolean hasActiveCatalystInstance = mAppLifecycleFacade.getRunningReactContext().hasActiveCatalystInstance(); + ReactContext reactContext = mAppLifecycleFacade.getRunningReactContext(); + boolean hasActiveCatalystInstance = reactContext != null && reactContext.hasActiveCatalystInstance(); if (!mAppLifecycleFacade.isAppVisible() || !hasActiveCatalystInstance) { postNotification(null); }