diff --git a/node_modules/react-native-notifications/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java b/node_modules/react-native-notifications/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java index f9c858b..94ea188 100644 --- a/node_modules/react-native-notifications/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java +++ b/node_modules/react-native-notifications/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java @@ -2,8 +2,8 @@ package com.wix.reactnativenotifications; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v4.app.NotificationManagerCompat; +import androidx.annotation.NonNull; +import androidx.core.app.NotificationManagerCompat; public abstract class NotificationManagerCompatFacade { public static NotificationManagerCompat from(@NonNull Context context) { diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java index 90969b2..4c00e69 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java @@ -63,7 +63,7 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements @Override public void onNewIntent(Intent intent) { if (NotificationIntentAdapter.canHandleIntent(intent)) { - Bundle notificationData = intent.getExtras(); + Bundle notificationData = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent); final IPushNotification notification = PushNotification.get(getReactApplicationContext().getApplicationContext(), notificationData); if (notification != null) { notification.onOpened(); diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java index a249c6a..5b1e9c7 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java @@ -19,6 +19,7 @@ import com.wix.reactnativenotifications.core.notification.IPushNotification; import com.wix.reactnativenotifications.core.notification.PushNotification; import com.wix.reactnativenotifications.core.notificationdrawer.IPushNotificationsDrawer; import com.wix.reactnativenotifications.core.notificationdrawer.PushNotificationsDrawer; +import com.wix.reactnativenotifications.core.ReactAppLifecycleFacade; import java.util.Arrays; import java.util.Collections; @@ -66,7 +67,13 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade. @Override public void onActivityStarted(Activity activity) { - if (InitialNotificationHolder.getInstance().get() == null) { + boolean isReactInitialized = false; + if (AppLifecycleFacadeHolder.get() instanceof ReactAppLifecycleFacade) { + isReactInitialized = AppLifecycleFacadeHolder.get().isReactInitialized(); + } + + if (InitialNotificationHolder.getInstance().get() == null && !isReactInitialized) { + callOnOpenedIfNeed(activity); } } @@ -95,8 +102,7 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade. Intent intent = activity.getIntent(); if (NotificationIntentAdapter.canHandleIntent(intent)) { Context appContext = mApplication.getApplicationContext(); - Bundle notificationData = NotificationIntentAdapter.canHandleTrampolineActivity(appContext) ? - intent.getExtras() : NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent); + Bundle notificationData = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent); final IPushNotification pushNotification = PushNotification.get(appContext, notificationData); if (pushNotification != null) { pushNotification.onOpened(); diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java index 70f609a..4484808 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java @@ -14,17 +14,9 @@ public class NotificationIntentAdapter { @SuppressLint("UnspecifiedImmutableFlag") public static PendingIntent createPendingNotificationIntent(Context appContext, PushNotificationProps notification) { - if (canHandleTrampolineActivity(appContext)) { - Intent intent = new Intent(appContext, ProxyService.class); - intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle()); - return PendingIntent.getService(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT); - } else { - Intent mainActivityIntent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName()); - mainActivityIntent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle()); - TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(appContext); - taskStackBuilder.addNextIntentWithParentStack(mainActivityIntent); - return taskStackBuilder.getPendingIntent((int) System.currentTimeMillis(), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); - } + Intent intent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName()); + intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle()); + return PendingIntent.getActivity(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); } public static boolean canHandleTrampolineActivity(Context appContext) { diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java index eade08d..a9f2864 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java @@ -28,7 +28,7 @@ public class PushNotification implements IPushNotification { final protected AppLifecycleFacade mAppLifecycleFacade; final protected AppLaunchHelper mAppLaunchHelper; final protected JsIOHelper mJsIOHelper; - final protected PushNotificationProps mNotificationProps; + protected PushNotificationProps mNotificationProps; final protected AppVisibilityListener mAppVisibilityListener = new AppVisibilityListener() { @Override public void onAppVisible() { diff --git a/node_modules/react-native-notifications/lib/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java b/node_modules/react-native-notifications/lib/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java index f9c858b..94ea188 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java +++ b/node_modules/react-native-notifications/lib/android/app/src/reactNative59/java/com/wix/reactnativenotifications/NotificationManagerCompatFacade.java @@ -2,8 +2,8 @@ package com.wix.reactnativenotifications; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v4.app.NotificationManagerCompat; +import androidx.annotation.NonNull; +import androidx.core.app.NotificationManagerCompat; public abstract class NotificationManagerCompatFacade { public static NotificationManagerCompat from(@NonNull Context context) { diff --git a/node_modules/react-native-notifications/lib/dist/Notifications.d.ts b/node_modules/react-native-notifications/lib/dist/Notifications.d.ts index 6e49fd4..5fe9515 100644 --- a/node_modules/react-native-notifications/lib/dist/Notifications.d.ts +++ b/node_modules/react-native-notifications/lib/dist/Notifications.d.ts @@ -32,7 +32,7 @@ export declare class NotificationsRoot { /** * setCategories */ - setCategories(categories: [NotificationCategory?]): void; + setCategories(categories: NotificationCategory[]): void; /** * cancelLocalNotification */ diff --git a/node_modules/react-native-notifications/lib/ios/RCTConvert+RNNotifications.h b/node_modules/react-native-notifications/lib/ios/RCTConvert+RNNotifications.h index 8b2c269..8667351 100644 --- a/node_modules/react-native-notifications/lib/ios/RCTConvert+RNNotifications.h +++ b/node_modules/react-native-notifications/lib/ios/RCTConvert+RNNotifications.h @@ -1,5 +1,5 @@ #import -@import UserNotifications; +#import @interface RCTConvert (UIMutableUserNotificationAction) + (UIMutableUserNotificationAction *)UIMutableUserNotificationAction:(id)json; diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.h b/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.h index 4bc5292..71df0bc 100644 --- a/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.h +++ b/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.h @@ -4,7 +4,7 @@ typedef void (^RCTPromiseResolveBlock)(id result); typedef void (^RCTResponseSenderBlock)(NSArray *response); typedef void (^RCTPromiseRejectBlock)(NSString *code, NSString *message, NSError *error); -@import UserNotifications; +#import @interface RNNotificationCenter : NSObject diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m b/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m index afd5c73..ec4dd85 100644 --- a/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m +++ b/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m @@ -48,14 +48,15 @@ - (void)requestPermissions:(NSDictionary *)options { } - (void)setCategories:(NSArray *)json { - NSMutableSet* categories = nil; + NSMutableSet* categories = [NSMutableSet new]; - if ([json count] > 0) { - categories = [NSMutableSet new]; - for (NSDictionary* categoryJson in json) { - [categories addObject:[RCTConvert UNMutableUserNotificationCategory:categoryJson]]; + for (NSDictionary* categoryJson in json) { + UNNotificationCategory *category = [RCTConvert UNMutableUserNotificationCategory:categoryJson]; + if (category) { + [categories addObject:category]; } } + [[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:categories]; } diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationCenterListener.h b/node_modules/react-native-notifications/lib/ios/RNNotificationCenterListener.h index 77a67dd..eaf0043 100644 --- a/node_modules/react-native-notifications/lib/ios/RNNotificationCenterListener.h +++ b/node_modules/react-native-notifications/lib/ios/RNNotificationCenterListener.h @@ -1,5 +1,5 @@ #import -@import UserNotifications; +#import #import "RNNotificationEventHandler.h" @interface RNNotificationCenterListener : NSObject diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.h b/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.h index a07c6e9..8e3ca6a 100644 --- a/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.h +++ b/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.h @@ -1,5 +1,5 @@ #import -@import UserNotifications; +#import #import "RNNotificationsStore.h" #import "RNEventEmitter.h" diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationParser.h b/node_modules/react-native-notifications/lib/ios/RNNotificationParser.h index 7aa2bfb..c1c019c 100644 --- a/node_modules/react-native-notifications/lib/ios/RNNotificationParser.h +++ b/node_modules/react-native-notifications/lib/ios/RNNotificationParser.h @@ -1,5 +1,5 @@ #import -@import UserNotifications; +#import @interface RNNotificationParser : NSObject diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationParser.m b/node_modules/react-native-notifications/lib/ios/RNNotificationParser.m index 62f3043..840acda 100644 --- a/node_modules/react-native-notifications/lib/ios/RNNotificationParser.m +++ b/node_modules/react-native-notifications/lib/ios/RNNotificationParser.m @@ -12,7 +12,18 @@ + (NSDictionary *)parseNotificationUserInfo:(NSDictionary *)userInfo withIdentif } + (NSDictionary *)parseNotificationResponse:(UNNotificationResponse *)response { - NSDictionary* responseDict = @{@"notification": [RCTConvert UNNotificationPayload:response.notification], @"identifier": response.notification.request.identifier, @"action": [self parseNotificationResponseAction:response]}; + NSMutableDictionary *notificationPayload = [[RCTConvert UNNotificationPayload:response.notification] mutableCopy]; + + NSDictionary *responseAction = [self parseNotificationResponseAction:response]; + + if (responseAction != nil) { + [notificationPayload setObject:responseAction forKey:@"action"]; + } + + NSDictionary *responseDict = @{ + @"notification": [notificationPayload copy], + @"identifier": response.notification.request.identifier + }; return responseDict; } diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationsStore.h b/node_modules/react-native-notifications/lib/ios/RNNotificationsStore.h index 4f8a171..7e4f9ca 100644 --- a/node_modules/react-native-notifications/lib/ios/RNNotificationsStore.h +++ b/node_modules/react-native-notifications/lib/ios/RNNotificationsStore.h @@ -1,6 +1,6 @@ #import #import -@import UserNotifications; +#import @interface RNNotificationsStore : NSObject