diff --git a/packages/messaging/android/src/main/java/io/invertase/firebase/messaging/ReactNativeFirebaseMessagingModule.java b/packages/messaging/android/src/main/java/io/invertase/firebase/messaging/ReactNativeFirebaseMessagingModule.java index 7196021b11..71565b08ca 100644 --- a/packages/messaging/android/src/main/java/io/invertase/firebase/messaging/ReactNativeFirebaseMessagingModule.java +++ b/packages/messaging/android/src/main/java/io/invertase/firebase/messaging/ReactNativeFirebaseMessagingModule.java @@ -83,7 +83,7 @@ public void getInitialNotification(Promise promise) { } else { remoteMessageMap = ReactNativeFirebaseMessagingSerializer.remoteMessageToWritableMap(remoteMessage); } - if (remoteMessageMap != null){ + if (remoteMessageMap != null) { promise.resolve(remoteMessageMap); initialNotificationMap.put(messageId, true); return; @@ -228,9 +228,10 @@ public void onNewIntent(Intent intent) { } else { remoteMessageMap = ReactNativeFirebaseMessagingSerializer.remoteMessageToWritableMap(remoteMessage); } - - if (remoteMessageMap != null){ - initialNotification = remoteMessageMap; + + if (remoteMessageMap != null) { + // WritableNativeMap not be consumed twice. But it is resolved in future and in event below. Make a copy - issue #5231 + initialNotification = remoteMessageMap.copy(); ReactNativeFirebaseMessagingReceiver.notifications.remove(messageId); ReactNativeFirebaseEventEmitter emitter = ReactNativeFirebaseEventEmitter.getSharedInstance();