diff --git a/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java b/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java index 9863ed5d..25e47c6a 100644 --- a/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java +++ b/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java @@ -67,6 +67,7 @@ of this software and associated documentation files (the "Software"), to deal import com.onesignal.user.subscriptions.IPushSubscription; import com.onesignal.user.subscriptions.IPushSubscriptionObserver; import com.onesignal.user.subscriptions.PushSubscriptionChangedState; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.json.JSONException; @@ -82,8 +83,8 @@ public class RNOneSignal extends NativeOneSignalSpec private boolean hasSetPushSubscriptionObserver = false; private boolean hasSetUserStateObserver = false; - private final HashMap notificationWillDisplayCache = new HashMap<>(); - private final HashMap preventDefaultCache = new HashMap<>(); + private final Map notificationWillDisplayCache = + Collections.synchronizedMap(new HashMap<>()); private boolean hasAddedNotificationForegroundListener = false; private boolean hasAddedInAppMessageLifecycleListener = false; @@ -214,7 +215,6 @@ public String getName() { public void invalidate() { removeObservers(); notificationWillDisplayCache.clear(); - preventDefaultCache.clear(); if (currentInstance == this) { currentInstance = null; } @@ -366,6 +366,7 @@ public void addNotificationForegroundLifecycleListener() { public void onWillDisplay(INotificationWillDisplayEvent event) { if (!this.hasAddedNotificationForegroundListener) { event.getNotification().display(); + return; } INotification notification = event.getNotification(); @@ -376,16 +377,6 @@ public void onWillDisplay(INotificationWillDisplayEvent event) { try { emitOnNotificationWillDisplay( RNUtils.convertHashMapToWritableMap(RNUtils.convertNotificationToMap(notification))); - - try { - synchronized (event) { - while (preventDefaultCache.containsKey(notificationId)) { - event.wait(); - } - } - } catch (InterruptedException e) { - Logging.error("InterruptedException: " + e.toString(), null); - } } catch (JSONException e) { logJSONException("onNotificationWillDisplay", e); } @@ -393,7 +384,7 @@ public void onWillDisplay(INotificationWillDisplayEvent event) { @Override public void displayNotification(String notificationId) { - INotificationWillDisplayEvent event = notificationWillDisplayCache.get(notificationId); + INotificationWillDisplayEvent event = notificationWillDisplayCache.remove(notificationId); if (event == null) { Logging.error( "Could not find onWillDisplayNotification event for notification with id: " + notificationId, null); @@ -411,7 +402,6 @@ public void preventDefault(String notificationId) { return; } event.preventDefault(); - this.preventDefaultCache.put(notificationId, event); } @Override