@amazon-devices/expo-notifications 2.0.9000000000-rn-83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +2 -0
- package/CHANGELOG.md +478 -0
- package/LICENSE +7 -0
- package/README.kepler.md +3 -0
- package/README.md +2003 -0
- package/THIRD_PARTY_NOTICES.txt +4 -0
- package/android/build.gradle +125 -0
- package/android/src/main/AndroidManifest.xml +39 -0
- package/android/src/main/java/expo/modules/notifications/Exceptions.kt +22 -0
- package/android/src/main/java/expo/modules/notifications/NotificationsPackage.java +34 -0
- package/android/src/main/java/expo/modules/notifications/Utils.kt +19 -0
- package/android/src/main/java/expo/modules/notifications/badge/BadgeHelper.kt +24 -0
- package/android/src/main/java/expo/modules/notifications/badge/BadgeModule.kt +22 -0
- package/android/src/main/java/expo/modules/notifications/notifications/ArgumentsNotificationContentBuilder.java +149 -0
- package/android/src/main/java/expo/modules/notifications/notifications/JSONNotificationContentBuilder.java +203 -0
- package/android/src/main/java/expo/modules/notifications/notifications/NotificationManager.java +119 -0
- package/android/src/main/java/expo/modules/notifications/notifications/NotificationSerializer.java +202 -0
- package/android/src/main/java/expo/modules/notifications/notifications/RemoteMessageSerializer.java +104 -0
- package/android/src/main/java/expo/modules/notifications/notifications/SoundResolver.java +58 -0
- package/android/src/main/java/expo/modules/notifications/notifications/background/BackgroundRemoteNotificationTaskConsumer.java +123 -0
- package/android/src/main/java/expo/modules/notifications/notifications/background/ExpoBackgroundNotificationTasksModule.kt +33 -0
- package/android/src/main/java/expo/modules/notifications/notifications/categories/ExpoNotificationCategoriesModule.kt +149 -0
- package/android/src/main/java/expo/modules/notifications/notifications/categories/serializers/ExpoNotificationsCategoriesSerializer.java +67 -0
- package/android/src/main/java/expo/modules/notifications/notifications/categories/serializers/NotificationsCategoriesSerializer.java +11 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/AbstractNotificationsChannelsProvider.java +81 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/AndroidXNotificationsChannelsProvider.java +38 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/InvalidVibrationPatternException.java +14 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationChannelGroupManagerModule.kt +70 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationChannelManagerModule.kt +83 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationsChannelsProvider.java +13 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/AndroidXNotificationsChannelGroupManager.java +67 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/AndroidXNotificationsChannelManager.java +196 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/NotificationsChannelGroupManager.java +28 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/NotificationsChannelManager.java +28 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/ExpoNotificationsChannelGroupSerializer.java +55 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/ExpoNotificationsChannelSerializer.java +101 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/NotificationsChannelGroupSerializer.java +20 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/NotificationsChannelSerializer.java +35 -0
- package/android/src/main/java/expo/modules/notifications/notifications/emitting/NotificationsEmitter.kt +78 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/AudioContentType.java +45 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/AudioUsage.java +55 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationImportance.java +48 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationPriority.java +51 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationVisibility.java +44 -0
- package/android/src/main/java/expo/modules/notifications/notifications/handling/NotificationsHandler.kt +127 -0
- package/android/src/main/java/expo/modules/notifications/notifications/handling/SingleNotificationHandlerTask.java +131 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationBuilder.java +35 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationListener.java +37 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationManager.java +22 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationPresentationEffect.java +11 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationPresentationEffectsManager.java +7 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationTrigger.java +19 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/SchedulableNotificationTrigger.java +20 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/Notification.java +59 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationAction.java +63 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationBehavior.java +84 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationCategory.java +61 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java +356 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationRequest.java +66 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationResponse.java +60 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/TextInputNotificationAction.java +42 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/TextInputNotificationResponse.java +42 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/triggers/FirebaseNotificationTrigger.java +61 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/ExpoNotificationPresentationEffectsManager.java +63 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/ExpoNotificationPresentationModule.kt +113 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/BaseNotificationBuilder.java +50 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/CategoryAwareNotificationBuilder.java +80 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ChannelAwareNotificationBuilder.java +135 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.java +295 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/effects/BaseNotificationEffect.java +53 -0
- package/android/src/main/java/expo/modules/notifications/notifications/scheduling/NotificationScheduler.kt +235 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/ChannelAwareTrigger.java +49 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/DailyTrigger.java +76 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/DateTrigger.java +64 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/TimeIntervalTrigger.java +87 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/WeeklyTrigger.java +85 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/YearlyTrigger.java +94 -0
- package/android/src/main/java/expo/modules/notifications/permissions/NotificationPermissionsModule.kt +124 -0
- package/android/src/main/java/expo/modules/notifications/serverregistration/InstallationId.java +134 -0
- package/android/src/main/java/expo/modules/notifications/serverregistration/RegistrationInfo.kt +24 -0
- package/android/src/main/java/expo/modules/notifications/serverregistration/ServerRegistrationModule.kt +32 -0
- package/android/src/main/java/expo/modules/notifications/service/ExpoFirebaseMessagingService.kt +15 -0
- package/android/src/main/java/expo/modules/notifications/service/NotificationForwarderActivity.kt +33 -0
- package/android/src/main/java/expo/modules/notifications/service/NotificationsService.kt +780 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/Base64Serialization.kt +33 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoCategoriesDelegate.kt +21 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoHandlingDelegate.kt +146 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoPresentationDelegate.kt +193 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoSchedulingDelegate.kt +117 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt +126 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/SharedPreferencesNotificationCategoriesStore.kt +106 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/SharedPreferencesNotificationsStore.kt +119 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/CategoriesDelegate.kt +14 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/FirebaseMessagingDelegate.kt +20 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/HandlingDelegate.kt +10 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/PresentationDelegate.kt +11 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/SchedulingDelegate.kt +13 -0
- package/android/src/main/java/expo/modules/notifications/tokens/PushTokenManager.java +88 -0
- package/android/src/main/java/expo/modules/notifications/tokens/PushTokenModule.kt +91 -0
- package/android/src/main/java/expo/modules/notifications/tokens/interfaces/FirebaseTokenListener.java +16 -0
- package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenListener.java +14 -0
- package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenManager.java +22 -0
- package/android/src/main/res/values/strings.xml +4 -0
- package/app.plugin.js +1 -0
- package/build/BackgroundNotificationTasksModule.d.ts +4 -0
- package/build/BackgroundNotificationTasksModule.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.js +7 -0
- package/build/BackgroundNotificationTasksModule.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.kepler.d.ts +3 -0
- package/build/BackgroundNotificationTasksModule.kepler.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.kepler.js +9 -0
- package/build/BackgroundNotificationTasksModule.kepler.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.native.d.ts +4 -0
- package/build/BackgroundNotificationTasksModule.native.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.native.js +3 -0
- package/build/BackgroundNotificationTasksModule.native.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.types.d.ts +11 -0
- package/build/BackgroundNotificationTasksModule.types.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.types.js +7 -0
- package/build/BackgroundNotificationTasksModule.types.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.web.d.ts +6 -0
- package/build/BackgroundNotificationTasksModule.web.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.web.js +9 -0
- package/build/BackgroundNotificationTasksModule.web.js.map +1 -0
- package/build/BadgeModule.d.ts +4 -0
- package/build/BadgeModule.d.ts.map +1 -0
- package/build/BadgeModule.js +5 -0
- package/build/BadgeModule.js.map +1 -0
- package/build/BadgeModule.kepler.d.ts +3 -0
- package/build/BadgeModule.kepler.d.ts.map +1 -0
- package/build/BadgeModule.kepler.js +9 -0
- package/build/BadgeModule.kepler.js.map +1 -0
- package/build/BadgeModule.native.d.ts +4 -0
- package/build/BadgeModule.native.d.ts.map +1 -0
- package/build/BadgeModule.native.js +12 -0
- package/build/BadgeModule.native.js.map +1 -0
- package/build/BadgeModule.types.d.ts +10 -0
- package/build/BadgeModule.types.d.ts.map +1 -0
- package/build/BadgeModule.types.js +2 -0
- package/build/BadgeModule.types.js.map +1 -0
- package/build/BadgeModule.web.d.ts +4 -0
- package/build/BadgeModule.web.d.ts.map +1 -0
- package/build/BadgeModule.web.js +26 -0
- package/build/BadgeModule.web.js.map +1 -0
- package/build/DevicePushTokenAutoRegistration.fx.d.ts +15 -0
- package/build/DevicePushTokenAutoRegistration.fx.d.ts.map +1 -0
- package/build/DevicePushTokenAutoRegistration.fx.js +87 -0
- package/build/DevicePushTokenAutoRegistration.fx.js.map +1 -0
- package/build/NotificationCategoriesModule.d.ts +4 -0
- package/build/NotificationCategoriesModule.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.js +13 -0
- package/build/NotificationCategoriesModule.js.map +1 -0
- package/build/NotificationCategoriesModule.kepler.d.ts +3 -0
- package/build/NotificationCategoriesModule.kepler.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.kepler.js +10 -0
- package/build/NotificationCategoriesModule.kepler.js.map +1 -0
- package/build/NotificationCategoriesModule.native.d.ts +4 -0
- package/build/NotificationCategoriesModule.native.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.native.js +3 -0
- package/build/NotificationCategoriesModule.native.js.map +1 -0
- package/build/NotificationCategoriesModule.types.d.ts +17 -0
- package/build/NotificationCategoriesModule.types.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.types.js +2 -0
- package/build/NotificationCategoriesModule.types.js.map +1 -0
- package/build/NotificationCategoriesModule.web.d.ts +8 -0
- package/build/NotificationCategoriesModule.web.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.web.js +12 -0
- package/build/NotificationCategoriesModule.web.js.map +1 -0
- package/build/NotificationChannelGroupManager.d.ts +4 -0
- package/build/NotificationChannelGroupManager.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.js +5 -0
- package/build/NotificationChannelGroupManager.js.map +1 -0
- package/build/NotificationChannelGroupManager.kepler.d.ts +3 -0
- package/build/NotificationChannelGroupManager.kepler.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.kepler.js +9 -0
- package/build/NotificationChannelGroupManager.kepler.js.map +1 -0
- package/build/NotificationChannelGroupManager.native.d.ts +4 -0
- package/build/NotificationChannelGroupManager.native.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.native.js +3 -0
- package/build/NotificationChannelGroupManager.native.js.map +1 -0
- package/build/NotificationChannelGroupManager.types.d.ts +28 -0
- package/build/NotificationChannelGroupManager.types.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.types.js +2 -0
- package/build/NotificationChannelGroupManager.types.js.map +1 -0
- package/build/NotificationChannelManager.d.ts +4 -0
- package/build/NotificationChannelManager.d.ts.map +1 -0
- package/build/NotificationChannelManager.js +5 -0
- package/build/NotificationChannelManager.js.map +1 -0
- package/build/NotificationChannelManager.kepler.d.ts +3 -0
- package/build/NotificationChannelManager.kepler.d.ts.map +1 -0
- package/build/NotificationChannelManager.kepler.js +9 -0
- package/build/NotificationChannelManager.kepler.js.map +1 -0
- package/build/NotificationChannelManager.native.d.ts +4 -0
- package/build/NotificationChannelManager.native.d.ts.map +1 -0
- package/build/NotificationChannelManager.native.js +3 -0
- package/build/NotificationChannelManager.native.js.map +1 -0
- package/build/NotificationChannelManager.types.d.ts +91 -0
- package/build/NotificationChannelManager.types.d.ts.map +1 -0
- package/build/NotificationChannelManager.types.js +53 -0
- package/build/NotificationChannelManager.types.js.map +1 -0
- package/build/NotificationPermissions.d.ts +56 -0
- package/build/NotificationPermissions.d.ts.map +1 -0
- package/build/NotificationPermissions.js +79 -0
- package/build/NotificationPermissions.js.map +1 -0
- package/build/NotificationPermissions.types.d.ts +94 -0
- package/build/NotificationPermissions.types.d.ts.map +1 -0
- package/build/NotificationPermissions.types.js +21 -0
- package/build/NotificationPermissions.types.js.map +1 -0
- package/build/NotificationPermissionsModule.d.ts +4 -0
- package/build/NotificationPermissionsModule.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.js +67 -0
- package/build/NotificationPermissionsModule.js.map +1 -0
- package/build/NotificationPermissionsModule.kepler.d.ts +3 -0
- package/build/NotificationPermissionsModule.kepler.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.kepler.js +9 -0
- package/build/NotificationPermissionsModule.kepler.js.map +1 -0
- package/build/NotificationPermissionsModule.native.d.ts +4 -0
- package/build/NotificationPermissionsModule.native.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.native.js +3 -0
- package/build/NotificationPermissionsModule.native.js.map +1 -0
- package/build/NotificationPermissionsModule.types.d.ts +7 -0
- package/build/NotificationPermissionsModule.types.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.types.js +2 -0
- package/build/NotificationPermissionsModule.types.js.map +1 -0
- package/build/NotificationPresenterModule.d.ts +4 -0
- package/build/NotificationPresenterModule.d.ts.map +1 -0
- package/build/NotificationPresenterModule.js +5 -0
- package/build/NotificationPresenterModule.js.map +1 -0
- package/build/NotificationPresenterModule.kepler.d.ts +4 -0
- package/build/NotificationPresenterModule.kepler.d.ts.map +1 -0
- package/build/NotificationPresenterModule.kepler.js +55 -0
- package/build/NotificationPresenterModule.kepler.js.map +1 -0
- package/build/NotificationPresenterModule.native.d.ts +4 -0
- package/build/NotificationPresenterModule.native.d.ts.map +1 -0
- package/build/NotificationPresenterModule.native.js +3 -0
- package/build/NotificationPresenterModule.native.js.map +1 -0
- package/build/NotificationPresenterModule.types.d.ts +9 -0
- package/build/NotificationPresenterModule.types.d.ts.map +1 -0
- package/build/NotificationPresenterModule.types.js +2 -0
- package/build/NotificationPresenterModule.types.js.map +1 -0
- package/build/NotificationScheduler.d.ts +4 -0
- package/build/NotificationScheduler.d.ts.map +1 -0
- package/build/NotificationScheduler.js +5 -0
- package/build/NotificationScheduler.js.map +1 -0
- package/build/NotificationScheduler.kepler.d.ts +4 -0
- package/build/NotificationScheduler.kepler.d.ts.map +1 -0
- package/build/NotificationScheduler.kepler.js +50 -0
- package/build/NotificationScheduler.kepler.js.map +1 -0
- package/build/NotificationScheduler.native.d.ts +4 -0
- package/build/NotificationScheduler.native.d.ts.map +1 -0
- package/build/NotificationScheduler.native.js +3 -0
- package/build/NotificationScheduler.native.js.map +1 -0
- package/build/NotificationScheduler.types.d.ts +65 -0
- package/build/NotificationScheduler.types.d.ts.map +1 -0
- package/build/NotificationScheduler.types.js +2 -0
- package/build/NotificationScheduler.types.js.map +1 -0
- package/build/Notifications.types.d.ts +666 -0
- package/build/Notifications.types.d.ts.map +1 -0
- package/build/Notifications.types.js +12 -0
- package/build/Notifications.types.js.map +1 -0
- package/build/NotificationsEmitter.d.ts +75 -0
- package/build/NotificationsEmitter.d.ts.map +1 -0
- package/build/NotificationsEmitter.js +95 -0
- package/build/NotificationsEmitter.js.map +1 -0
- package/build/NotificationsEmitterModule.d.ts +4 -0
- package/build/NotificationsEmitterModule.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.js +12 -0
- package/build/NotificationsEmitterModule.js.map +1 -0
- package/build/NotificationsEmitterModule.kepler.d.ts +3 -0
- package/build/NotificationsEmitterModule.kepler.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.kepler.js +9 -0
- package/build/NotificationsEmitterModule.kepler.js.map +1 -0
- package/build/NotificationsEmitterModule.native.d.ts +4 -0
- package/build/NotificationsEmitterModule.native.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.native.js +3 -0
- package/build/NotificationsEmitterModule.native.js.map +1 -0
- package/build/NotificationsEmitterModule.types.d.ts +6 -0
- package/build/NotificationsEmitterModule.types.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.types.js +2 -0
- package/build/NotificationsEmitterModule.types.js.map +1 -0
- package/build/NotificationsHandler.d.ts +60 -0
- package/build/NotificationsHandler.d.ts.map +1 -0
- package/build/NotificationsHandler.js +72 -0
- package/build/NotificationsHandler.js.map +1 -0
- package/build/NotificationsHandlerModule.d.ts +4 -0
- package/build/NotificationsHandlerModule.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.js +12 -0
- package/build/NotificationsHandlerModule.js.map +1 -0
- package/build/NotificationsHandlerModule.kepler.d.ts +3 -0
- package/build/NotificationsHandlerModule.kepler.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.kepler.js +9 -0
- package/build/NotificationsHandlerModule.kepler.js.map +1 -0
- package/build/NotificationsHandlerModule.native.d.ts +4 -0
- package/build/NotificationsHandlerModule.native.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.native.js +3 -0
- package/build/NotificationsHandlerModule.native.js.map +1 -0
- package/build/NotificationsHandlerModule.types.d.ts +6 -0
- package/build/NotificationsHandlerModule.types.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.types.js +2 -0
- package/build/NotificationsHandlerModule.types.js.map +1 -0
- package/build/PushTokenManager.d.ts +4 -0
- package/build/PushTokenManager.d.ts.map +1 -0
- package/build/PushTokenManager.js +12 -0
- package/build/PushTokenManager.js.map +1 -0
- package/build/PushTokenManager.kepler.d.ts +3 -0
- package/build/PushTokenManager.kepler.d.ts.map +1 -0
- package/build/PushTokenManager.kepler.js +9 -0
- package/build/PushTokenManager.kepler.js.map +1 -0
- package/build/PushTokenManager.native.d.ts +4 -0
- package/build/PushTokenManager.native.d.ts.map +1 -0
- package/build/PushTokenManager.native.js +3 -0
- package/build/PushTokenManager.native.js.map +1 -0
- package/build/PushTokenManager.types.d.ts +6 -0
- package/build/PushTokenManager.types.d.ts.map +1 -0
- package/build/PushTokenManager.types.js +2 -0
- package/build/PushTokenManager.types.js.map +1 -0
- package/build/ServerRegistrationModule.d.ts +4 -0
- package/build/ServerRegistrationModule.d.ts.map +1 -0
- package/build/ServerRegistrationModule.js +5 -0
- package/build/ServerRegistrationModule.js.map +1 -0
- package/build/ServerRegistrationModule.kepler.d.ts +3 -0
- package/build/ServerRegistrationModule.kepler.d.ts.map +1 -0
- package/build/ServerRegistrationModule.kepler.js +9 -0
- package/build/ServerRegistrationModule.kepler.js.map +1 -0
- package/build/ServerRegistrationModule.native.d.ts +4 -0
- package/build/ServerRegistrationModule.native.d.ts.map +1 -0
- package/build/ServerRegistrationModule.native.js +3 -0
- package/build/ServerRegistrationModule.native.js.map +1 -0
- package/build/ServerRegistrationModule.types.d.ts +7 -0
- package/build/ServerRegistrationModule.types.d.ts.map +1 -0
- package/build/ServerRegistrationModule.types.js +2 -0
- package/build/ServerRegistrationModule.types.js.map +1 -0
- package/build/ServerRegistrationModule.web.d.ts +4 -0
- package/build/ServerRegistrationModule.web.d.ts.map +1 -0
- package/build/ServerRegistrationModule.web.js +50 -0
- package/build/ServerRegistrationModule.web.js.map +1 -0
- package/build/TokenEmitter.d.ts +42 -0
- package/build/TokenEmitter.d.ts.map +1 -0
- package/build/TokenEmitter.js +44 -0
- package/build/TokenEmitter.js.map +1 -0
- package/build/Tokens.types.d.ts +99 -0
- package/build/Tokens.types.d.ts.map +1 -0
- package/build/Tokens.types.js +2 -0
- package/build/Tokens.types.js.map +1 -0
- package/build/cancelAllScheduledNotificationsAsync.d.ts +7 -0
- package/build/cancelAllScheduledNotificationsAsync.d.ts.map +1 -0
- package/build/cancelAllScheduledNotificationsAsync.js +14 -0
- package/build/cancelAllScheduledNotificationsAsync.js.map +1 -0
- package/build/cancelScheduledNotificationAsync.d.ts +22 -0
- package/build/cancelScheduledNotificationAsync.d.ts.map +1 -0
- package/build/cancelScheduledNotificationAsync.js +29 -0
- package/build/cancelScheduledNotificationAsync.js.map +1 -0
- package/build/deleteNotificationCategoryAsync.d.ts +11 -0
- package/build/deleteNotificationCategoryAsync.d.ts.map +1 -0
- package/build/deleteNotificationCategoryAsync.js +19 -0
- package/build/deleteNotificationCategoryAsync.js.map +1 -0
- package/build/deleteNotificationChannelAsync.android.d.ts +2 -0
- package/build/deleteNotificationChannelAsync.android.d.ts.map +1 -0
- package/build/deleteNotificationChannelAsync.android.js +9 -0
- package/build/deleteNotificationChannelAsync.android.js.map +1 -0
- package/build/deleteNotificationChannelAsync.d.ts +9 -0
- package/build/deleteNotificationChannelAsync.d.ts.map +1 -0
- package/build/deleteNotificationChannelAsync.js +11 -0
- package/build/deleteNotificationChannelAsync.js.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.android.d.ts +2 -0
- package/build/deleteNotificationChannelGroupAsync.android.d.ts.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.android.js +9 -0
- package/build/deleteNotificationChannelGroupAsync.android.js.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.d.ts +9 -0
- package/build/deleteNotificationChannelGroupAsync.d.ts.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.js +11 -0
- package/build/deleteNotificationChannelGroupAsync.js.map +1 -0
- package/build/dismissAllNotificationsAsync.d.ts +7 -0
- package/build/dismissAllNotificationsAsync.d.ts.map +1 -0
- package/build/dismissAllNotificationsAsync.js +14 -0
- package/build/dismissAllNotificationsAsync.js.map +1 -0
- package/build/dismissNotificationAsync.d.ts +8 -0
- package/build/dismissNotificationAsync.d.ts.map +1 -0
- package/build/dismissNotificationAsync.js +15 -0
- package/build/dismissNotificationAsync.js.map +1 -0
- package/build/getAllScheduledNotificationsAsync.d.ts +8 -0
- package/build/getAllScheduledNotificationsAsync.d.ts.map +1 -0
- package/build/getAllScheduledNotificationsAsync.js +14 -0
- package/build/getAllScheduledNotificationsAsync.js.map +1 -0
- package/build/getBadgeCountAsync.d.ts +8 -0
- package/build/getBadgeCountAsync.d.ts.map +1 -0
- package/build/getBadgeCountAsync.js +15 -0
- package/build/getBadgeCountAsync.js.map +1 -0
- package/build/getDevicePushTokenAsync.d.ts +8 -0
- package/build/getDevicePushTokenAsync.d.ts.map +1 -0
- package/build/getDevicePushTokenAsync.js +27 -0
- package/build/getDevicePushTokenAsync.js.map +1 -0
- package/build/getDevicePushTokenAsync.web.d.ts +3 -0
- package/build/getDevicePushTokenAsync.web.d.ts.map +1 -0
- package/build/getDevicePushTokenAsync.web.js +84 -0
- package/build/getDevicePushTokenAsync.web.js.map +1 -0
- package/build/getExpoPushTokenAsync.d.ts +40 -0
- package/build/getExpoPushTokenAsync.d.ts.map +1 -0
- package/build/getExpoPushTokenAsync.js +177 -0
- package/build/getExpoPushTokenAsync.js.map +1 -0
- package/build/getNextTriggerDateAsync.d.ts +26 -0
- package/build/getNextTriggerDateAsync.d.ts.map +1 -0
- package/build/getNextTriggerDateAsync.js +33 -0
- package/build/getNextTriggerDateAsync.js.map +1 -0
- package/build/getNotificationCategoriesAsync.d.ts +11 -0
- package/build/getNotificationCategoriesAsync.d.ts.map +1 -0
- package/build/getNotificationCategoriesAsync.js +18 -0
- package/build/getNotificationCategoriesAsync.js.map +1 -0
- package/build/getNotificationChannelAsync.android.d.ts +3 -0
- package/build/getNotificationChannelAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelAsync.android.js +9 -0
- package/build/getNotificationChannelAsync.android.js.map +1 -0
- package/build/getNotificationChannelAsync.d.ts +11 -0
- package/build/getNotificationChannelAsync.d.ts.map +1 -0
- package/build/getNotificationChannelAsync.js +13 -0
- package/build/getNotificationChannelAsync.js.map +1 -0
- package/build/getNotificationChannelGroupAsync.android.d.ts +3 -0
- package/build/getNotificationChannelGroupAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelGroupAsync.android.js +9 -0
- package/build/getNotificationChannelGroupAsync.android.js.map +1 -0
- package/build/getNotificationChannelGroupAsync.d.ts +12 -0
- package/build/getNotificationChannelGroupAsync.d.ts.map +1 -0
- package/build/getNotificationChannelGroupAsync.js +14 -0
- package/build/getNotificationChannelGroupAsync.js.map +1 -0
- package/build/getNotificationChannelGroupsAsync.android.d.ts +3 -0
- package/build/getNotificationChannelGroupsAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelGroupsAsync.android.js +9 -0
- package/build/getNotificationChannelGroupsAsync.android.js.map +1 -0
- package/build/getNotificationChannelGroupsAsync.d.ts +10 -0
- package/build/getNotificationChannelGroupsAsync.d.ts.map +1 -0
- package/build/getNotificationChannelGroupsAsync.js +12 -0
- package/build/getNotificationChannelGroupsAsync.js.map +1 -0
- package/build/getNotificationChannelsAsync.android.d.ts +3 -0
- package/build/getNotificationChannelsAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelsAsync.android.js +9 -0
- package/build/getNotificationChannelsAsync.android.js.map +1 -0
- package/build/getNotificationChannelsAsync.d.ts +10 -0
- package/build/getNotificationChannelsAsync.d.ts.map +1 -0
- package/build/getNotificationChannelsAsync.js +12 -0
- package/build/getNotificationChannelsAsync.js.map +1 -0
- package/build/getPresentedNotificationsAsync.d.ts +9 -0
- package/build/getPresentedNotificationsAsync.d.ts.map +1 -0
- package/build/getPresentedNotificationsAsync.js +15 -0
- package/build/getPresentedNotificationsAsync.js.map +1 -0
- package/build/index.d.ts +39 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +39 -0
- package/build/index.js.map +1 -0
- package/build/kepler/NotificationContent.d.ts +43 -0
- package/build/kepler/NotificationContent.d.ts.map +1 -0
- package/build/kepler/NotificationContent.js +96 -0
- package/build/kepler/NotificationContent.js.map +1 -0
- package/build/kepler/index.d.ts +3 -0
- package/build/kepler/index.d.ts.map +1 -0
- package/build/kepler/index.js +15 -0
- package/build/kepler/index.js.map +1 -0
- package/build/kepler/native-notification-manager.d.ts +3 -0
- package/build/kepler/native-notification-manager.d.ts.map +1 -0
- package/build/kepler/native-notification-manager.js +10 -0
- package/build/kepler/native-notification-manager.js.map +1 -0
- package/build/kepler/types/NotificationManagerTypes.d.ts +373 -0
- package/build/kepler/types/NotificationManagerTypes.d.ts.map +1 -0
- package/build/kepler/types/NotificationManagerTypes.js +279 -0
- package/build/kepler/types/NotificationManagerTypes.js.map +1 -0
- package/build/kepler/types/index.d.ts +3 -0
- package/build/kepler/types/index.d.ts.map +1 -0
- package/build/kepler/types/index.js +15 -0
- package/build/kepler/types/index.js.map +1 -0
- package/build/presentNotificationAsync.d.ts +11 -0
- package/build/presentNotificationAsync.d.ts.map +1 -0
- package/build/presentNotificationAsync.js +22 -0
- package/build/presentNotificationAsync.js.map +1 -0
- package/build/registerTaskAsync.d.ts +29 -0
- package/build/registerTaskAsync.d.ts.map +1 -0
- package/build/registerTaskAsync.js +37 -0
- package/build/registerTaskAsync.js.map +1 -0
- package/build/scheduleNotificationAsync.d.ts +60 -0
- package/build/scheduleNotificationAsync.d.ts.map +1 -0
- package/build/scheduleNotificationAsync.js +261 -0
- package/build/scheduleNotificationAsync.js.map +1 -0
- package/build/setBadgeCountAsync.d.ts +19 -0
- package/build/setBadgeCountAsync.d.ts.map +1 -0
- package/build/setBadgeCountAsync.js +19 -0
- package/build/setBadgeCountAsync.js.map +1 -0
- package/build/setNotificationCategoryAsync.d.ts +15 -0
- package/build/setNotificationCategoryAsync.d.ts.map +1 -0
- package/build/setNotificationCategoryAsync.js +22 -0
- package/build/setNotificationCategoryAsync.js.map +1 -0
- package/build/setNotificationChannelAsync.android.d.ts +3 -0
- package/build/setNotificationChannelAsync.android.d.ts.map +1 -0
- package/build/setNotificationChannelAsync.android.js +9 -0
- package/build/setNotificationChannelAsync.android.js.map +1 -0
- package/build/setNotificationChannelAsync.d.ts +22 -0
- package/build/setNotificationChannelAsync.d.ts.map +1 -0
- package/build/setNotificationChannelAsync.js +24 -0
- package/build/setNotificationChannelAsync.js.map +1 -0
- package/build/setNotificationChannelGroupAsync.android.d.ts +3 -0
- package/build/setNotificationChannelGroupAsync.android.d.ts.map +1 -0
- package/build/setNotificationChannelGroupAsync.android.js +9 -0
- package/build/setNotificationChannelGroupAsync.android.js.map +1 -0
- package/build/setNotificationChannelGroupAsync.d.ts +12 -0
- package/build/setNotificationChannelGroupAsync.d.ts.map +1 -0
- package/build/setNotificationChannelGroupAsync.js +14 -0
- package/build/setNotificationChannelGroupAsync.js.map +1 -0
- package/build/unregisterForNotificationsAsync.d.ts +2 -0
- package/build/unregisterForNotificationsAsync.d.ts.map +1 -0
- package/build/unregisterForNotificationsAsync.js +10 -0
- package/build/unregisterForNotificationsAsync.js.map +1 -0
- package/build/unregisterTaskAsync.d.ts +7 -0
- package/build/unregisterTaskAsync.d.ts.map +1 -0
- package/build/unregisterTaskAsync.js +15 -0
- package/build/unregisterTaskAsync.js.map +1 -0
- package/build/useLastNotificationResponse.d.ts +38 -0
- package/build/useLastNotificationResponse.d.ts.map +1 -0
- package/build/useLastNotificationResponse.js +63 -0
- package/build/useLastNotificationResponse.js.map +1 -0
- package/build/utils/keplerUuidUtils.d.ts +5 -0
- package/build/utils/keplerUuidUtils.d.ts.map +1 -0
- package/build/utils/keplerUuidUtils.js +15 -0
- package/build/utils/keplerUuidUtils.js.map +1 -0
- package/build/utils/updateDevicePushTokenAsync.d.ts +3 -0
- package/build/utils/updateDevicePushTokenAsync.d.ts.map +1 -0
- package/build/utils/updateDevicePushTokenAsync.js +115 -0
- package/build/utils/updateDevicePushTokenAsync.js.map +1 -0
- package/expo-module.config.json +20 -0
- package/ios/EXNotifications/Building/EXNotificationBuilder.h +19 -0
- package/ios/EXNotifications/Building/EXNotificationBuilder.m +91 -0
- package/ios/EXNotifications/EXBadgeModule.h +11 -0
- package/ios/EXNotifications/EXBadgeModule.m +36 -0
- package/ios/EXNotifications/EXServerRegistrationModule.h +19 -0
- package/ios/EXNotifications/EXServerRegistrationModule.m +194 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundNotificationTasksModule.h +16 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundNotificationTasksModule.m +62 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundRemoteNotificationConsumer.h +14 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundRemoteNotificationConsumer.m +51 -0
- package/ios/EXNotifications/Notifications/Categories/EXNotificationCategoriesModule.h +25 -0
- package/ios/EXNotifications/Notifications/Categories/EXNotificationCategoriesModule.m +217 -0
- package/ios/EXNotifications/Notifications/EXNotificationCenterDelegate.h +29 -0
- package/ios/EXNotifications/Notifications/EXNotificationCenterDelegate.m +209 -0
- package/ios/EXNotifications/Notifications/EXNotificationSerializer.h +16 -0
- package/ios/EXNotifications/Notifications/EXNotificationSerializer.m +232 -0
- package/ios/EXNotifications/Notifications/EXNotificationsDelegate.h +27 -0
- package/ios/EXNotifications/Notifications/Emitter/EXNotificationsEmitter.h +17 -0
- package/ios/EXNotifications/Notifications/Emitter/EXNotificationsEmitter.m +114 -0
- package/ios/EXNotifications/Notifications/Handler/EXNotificationsHandlerModule.h +12 -0
- package/ios/EXNotifications/Notifications/Handler/EXNotificationsHandlerModule.m +109 -0
- package/ios/EXNotifications/Notifications/Handler/EXSingleNotificationHandlerTask.h +33 -0
- package/ios/EXNotifications/Notifications/Handler/EXSingleNotificationHandlerTask.m +124 -0
- package/ios/EXNotifications/Notifications/NSDictionary+EXNotificationsVerifyingClass.h +7 -0
- package/ios/EXNotifications/Notifications/NSDictionary+EXNotificationsVerifyingClass.m +19 -0
- package/ios/EXNotifications/Notifications/Presenting/EXNotificationPresentationModule.h +13 -0
- package/ios/EXNotifications/Notifications/Presenting/EXNotificationPresentationModule.m +124 -0
- package/ios/EXNotifications/Notifications/Scheduling/EXNotificationSchedulerModule.h +21 -0
- package/ios/EXNotifications/Notifications/Scheduling/EXNotificationSchedulerModule.m +263 -0
- package/ios/EXNotifications/Permissions/EXLegacyRemoteNotificationPermissionRequester.h +13 -0
- package/ios/EXNotifications/Permissions/EXLegacyRemoteNotificationPermissionRequester.m +135 -0
- package/ios/EXNotifications/Permissions/EXNotificationPermissionsModule.h +8 -0
- package/ios/EXNotifications/Permissions/EXNotificationPermissionsModule.m +67 -0
- package/ios/EXNotifications/Permissions/EXRemoteNotificationPermissionSingletonModule.h +29 -0
- package/ios/EXNotifications/Permissions/EXRemoteNotificationPermissionSingletonModule.m +68 -0
- package/ios/EXNotifications/Permissions/EXUserFacingNotificationsPermissionsRequester.h +15 -0
- package/ios/EXNotifications/Permissions/EXUserFacingNotificationsPermissionsRequester.m +202 -0
- package/ios/EXNotifications/PushToken/EXPushTokenListener.h +14 -0
- package/ios/EXNotifications/PushToken/EXPushTokenManager.h +24 -0
- package/ios/EXNotifications/PushToken/EXPushTokenManager.m +63 -0
- package/ios/EXNotifications/PushToken/EXPushTokenModule.h +9 -0
- package/ios/EXNotifications/PushToken/EXPushTokenModule.m +154 -0
- package/ios/EXNotifications.podspec +25 -0
- package/package.json +67 -0
- package/plugin/build/withNotifications.d.ts +28 -0
- package/plugin/build/withNotifications.js +12 -0
- package/plugin/build/withNotificationsAndroid.d.ts +42 -0
- package/plugin/build/withNotificationsAndroid.js +184 -0
- package/plugin/build/withNotificationsIOS.d.ts +14 -0
- package/plugin/build/withNotificationsIOS.js +58 -0
- package/plugin/jest.config.js +1 -0
- package/plugin/src/withNotifications.ts +40 -0
- package/plugin/src/withNotificationsAndroid.ts +239 -0
- package/plugin/src/withNotificationsIOS.ts +78 -0
- package/plugin/tsconfig.json +9 -0
- package/src/BackgroundNotificationTasksModule.kepler.ts +8 -0
- package/src/BackgroundNotificationTasksModule.native.ts +7 -0
- package/src/BackgroundNotificationTasksModule.ts +8 -0
- package/src/BackgroundNotificationTasksModule.types.ts +12 -0
- package/src/BackgroundNotificationTasksModule.web.ts +8 -0
- package/src/BadgeModule.kepler.ts +8 -0
- package/src/BadgeModule.native.ts +15 -0
- package/src/BadgeModule.ts +6 -0
- package/src/BadgeModule.types.ts +11 -0
- package/src/BadgeModule.web.ts +28 -0
- package/src/DevicePushTokenAutoRegistration.fx.ts +119 -0
- package/src/NotificationCategoriesModule.kepler.ts +10 -0
- package/src/NotificationCategoriesModule.native.ts +7 -0
- package/src/NotificationCategoriesModule.ts +15 -0
- package/src/NotificationCategoriesModule.types.ts +22 -0
- package/src/NotificationCategoriesModule.web.ts +17 -0
- package/src/NotificationChannelGroupManager.kepler.ts +8 -0
- package/src/NotificationChannelGroupManager.native.ts +7 -0
- package/src/NotificationChannelGroupManager.ts +6 -0
- package/src/NotificationChannelGroupManager.types.ts +34 -0
- package/src/NotificationChannelManager.kepler.ts +8 -0
- package/src/NotificationChannelManager.native.ts +5 -0
- package/src/NotificationChannelManager.ts +6 -0
- package/src/NotificationChannelManager.types.ts +115 -0
- package/src/NotificationPermissions.ts +91 -0
- package/src/NotificationPermissions.types.ts +102 -0
- package/src/NotificationPermissionsModule.kepler.ts +8 -0
- package/src/NotificationPermissionsModule.native.ts +7 -0
- package/src/NotificationPermissionsModule.ts +83 -0
- package/src/NotificationPermissionsModule.types.ts +13 -0
- package/src/NotificationPresenterModule.kepler.ts +67 -0
- package/src/NotificationPresenterModule.native.ts +5 -0
- package/src/NotificationPresenterModule.ts +6 -0
- package/src/NotificationPresenterModule.types.ts +13 -0
- package/src/NotificationScheduler.kepler.ts +63 -0
- package/src/NotificationScheduler.native.ts +5 -0
- package/src/NotificationScheduler.ts +6 -0
- package/src/NotificationScheduler.types.ts +89 -0
- package/src/Notifications.types.ts +722 -0
- package/src/NotificationsEmitter.ts +111 -0
- package/src/NotificationsEmitterModule.kepler.ts +8 -0
- package/src/NotificationsEmitterModule.native.ts +5 -0
- package/src/NotificationsEmitterModule.ts +17 -0
- package/src/NotificationsEmitterModule.types.ts +7 -0
- package/src/NotificationsHandler.ts +120 -0
- package/src/NotificationsHandlerModule.kepler.ts +8 -0
- package/src/NotificationsHandlerModule.native.ts +5 -0
- package/src/NotificationsHandlerModule.ts +17 -0
- package/src/NotificationsHandlerModule.types.ts +10 -0
- package/src/PushTokenManager.kepler.ts +8 -0
- package/src/PushTokenManager.native.ts +5 -0
- package/src/PushTokenManager.ts +17 -0
- package/src/PushTokenManager.types.ts +6 -0
- package/src/ServerRegistrationModule.kepler.ts +8 -0
- package/src/ServerRegistrationModule.native.ts +7 -0
- package/src/ServerRegistrationModule.ts +6 -0
- package/src/ServerRegistrationModule.types.ts +7 -0
- package/src/ServerRegistrationModule.web.ts +56 -0
- package/src/TokenEmitter.ts +56 -0
- package/src/Tokens.types.ts +110 -0
- package/src/cancelAllScheduledNotificationsAsync.ts +16 -0
- package/src/cancelScheduledNotificationAsync.ts +31 -0
- package/src/deleteNotificationCategoryAsync.ts +23 -0
- package/src/deleteNotificationChannelAsync.android.ts +11 -0
- package/src/deleteNotificationChannelAsync.ts +10 -0
- package/src/deleteNotificationChannelGroupAsync.android.ts +11 -0
- package/src/deleteNotificationChannelGroupAsync.ts +10 -0
- package/src/dismissAllNotificationsAsync.ts +16 -0
- package/src/dismissNotificationAsync.ts +19 -0
- package/src/getAllScheduledNotificationsAsync.ts +17 -0
- package/src/getBadgeCountAsync.ts +17 -0
- package/src/getDevicePushTokenAsync.ts +31 -0
- package/src/getDevicePushTokenAsync.web.ts +122 -0
- package/src/getExpoPushTokenAsync.ts +238 -0
- package/src/getNextTriggerDateAsync.ts +38 -0
- package/src/getNotificationCategoriesAsync.ts +21 -0
- package/src/getNotificationChannelAsync.android.ts +13 -0
- package/src/getNotificationChannelAsync.ts +16 -0
- package/src/getNotificationChannelGroupAsync.android.ts +14 -0
- package/src/getNotificationChannelGroupAsync.ts +17 -0
- package/src/getNotificationChannelGroupsAsync.android.ts +13 -0
- package/src/getNotificationChannelGroupsAsync.ts +15 -0
- package/src/getNotificationChannelsAsync.android.ts +11 -0
- package/src/getNotificationChannelsAsync.ts +13 -0
- package/src/getPresentedNotificationsAsync.ts +18 -0
- package/src/index.ts +38 -0
- package/src/kepler/NotificationContent.ts +119 -0
- package/src/kepler/index.ts +16 -0
- package/src/kepler/native-notification-manager.ts +10 -0
- package/src/kepler/types/NotificationManagerTypes.ts +508 -0
- package/src/kepler/types/index.ts +16 -0
- package/src/presentNotificationAsync.ts +32 -0
- package/src/registerTaskAsync.ts +39 -0
- package/src/scheduleNotificationAsync.ts +335 -0
- package/src/setBadgeCountAsync.ts +32 -0
- package/src/setNotificationCategoryAsync.ts +37 -0
- package/src/setNotificationChannelAsync.android.ts +15 -0
- package/src/setNotificationChannelAsync.ts +28 -0
- package/src/setNotificationChannelGroupAsync.android.ts +18 -0
- package/src/setNotificationChannelGroupAsync.ts +21 -0
- package/src/unregisterForNotificationsAsync.ts +11 -0
- package/src/unregisterTaskAsync.ts +17 -0
- package/src/useLastNotificationResponse.ts +70 -0
- package/src/utils/keplerUuidUtils.ts +29 -0
- package/src/utils/updateDevicePushTokenAsync.ts +147 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXNotificationSchedulerModule.h>
|
|
4
|
+
#import <EXNotifications/EXNotificationSerializer.h>
|
|
5
|
+
#import <EXNotifications/EXNotificationBuilder.h>
|
|
6
|
+
#import <EXNotifications/NSDictionary+EXNotificationsVerifyingClass.h>
|
|
7
|
+
|
|
8
|
+
#import <UserNotifications/UserNotifications.h>
|
|
9
|
+
|
|
10
|
+
static NSString * const notificationTriggerTypeKey = @"type";
|
|
11
|
+
static NSString * const notificationTriggerRepeatsKey = @"repeats";
|
|
12
|
+
|
|
13
|
+
static NSString * const intervalNotificationTriggerType = @"timeInterval";
|
|
14
|
+
static NSString * const intervalNotificationTriggerIntervalKey = @"seconds";
|
|
15
|
+
|
|
16
|
+
static NSString * const dailyNotificationTriggerType = @"daily";
|
|
17
|
+
static NSString * const dailyNotificationTriggerHourKey = @"hour";
|
|
18
|
+
static NSString * const dailyNotificationTriggerMinuteKey = @"minute";
|
|
19
|
+
|
|
20
|
+
static NSString * const weeklyNotificationTriggerType = @"weekly";
|
|
21
|
+
static NSString * const weeklyNotificationTriggerWeekdayKey = @"weekday";
|
|
22
|
+
static NSString * const weeklyNotificationTriggerHourKey = @"hour";
|
|
23
|
+
static NSString * const weeklyNotificationTriggerMinuteKey = @"minute";
|
|
24
|
+
|
|
25
|
+
static NSString * const yearlyNotificationTriggerType = @"yearly";
|
|
26
|
+
static NSString * const yearlyNotificationTriggerDayKey = @"day";
|
|
27
|
+
static NSString * const yearlyNotificationTriggerMonthKey = @"month";
|
|
28
|
+
static NSString * const yearlyNotificationTriggerHourKey = @"hour";
|
|
29
|
+
static NSString * const yearlyNotificationTriggerMinuteKey = @"minute";
|
|
30
|
+
|
|
31
|
+
static NSString * const dateNotificationTriggerType = @"date";
|
|
32
|
+
static NSString * const dateNotificationTriggerTimestampKey = @"timestamp";
|
|
33
|
+
|
|
34
|
+
static NSString * const calendarNotificationTriggerType = @"calendar";
|
|
35
|
+
static NSString * const calendarNotificationTriggerComponentsKey = @"value";
|
|
36
|
+
static NSString * const calendarNotificationTriggerTimezoneKey = @"timezone";
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@interface EXNotificationSchedulerModule ()
|
|
41
|
+
|
|
42
|
+
@property (nonatomic, weak) id<EXNotificationBuilder> builder;
|
|
43
|
+
|
|
44
|
+
@end
|
|
45
|
+
|
|
46
|
+
@implementation EXNotificationSchedulerModule
|
|
47
|
+
|
|
48
|
+
EX_EXPORT_MODULE(ExpoNotificationScheduler);
|
|
49
|
+
|
|
50
|
+
- (void)setModuleRegistry:(EXModuleRegistry *)moduleRegistry
|
|
51
|
+
{
|
|
52
|
+
_builder = [moduleRegistry getModuleImplementingProtocol:@protocol(EXNotificationBuilder)];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# pragma mark - Exported methods
|
|
56
|
+
|
|
57
|
+
EX_EXPORT_METHOD_AS(getAllScheduledNotificationsAsync,
|
|
58
|
+
getAllScheduledNotifications:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject
|
|
59
|
+
)
|
|
60
|
+
{
|
|
61
|
+
[[UNUserNotificationCenter currentNotificationCenter] getPendingNotificationRequestsWithCompletionHandler:^(NSArray<UNNotificationRequest *> * _Nonnull requests) {
|
|
62
|
+
resolve([self serializeNotificationRequests:requests]);
|
|
63
|
+
}];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
EX_EXPORT_METHOD_AS(scheduleNotificationAsync,
|
|
67
|
+
scheduleNotification:(NSString *)identifier notificationSpec:(NSDictionary *)notificationSpec triggerSpec:(NSDictionary *)triggerSpec resolve:(EXPromiseResolveBlock)resolve rejecting:(EXPromiseRejectBlock)reject)
|
|
68
|
+
{
|
|
69
|
+
@try {
|
|
70
|
+
UNNotificationRequest *request = [self buildNotificationRequestWithIdentifier:identifier content:notificationSpec trigger:triggerSpec];
|
|
71
|
+
[[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
|
|
72
|
+
if (error) {
|
|
73
|
+
NSString *message = [NSString stringWithFormat:@"Failed to schedule notification. %@", error];
|
|
74
|
+
reject(@"ERR_NOTIFICATIONS_FAILED_TO_SCHEDULE", message, error);
|
|
75
|
+
} else {
|
|
76
|
+
resolve(identifier);
|
|
77
|
+
}
|
|
78
|
+
}];
|
|
79
|
+
} @catch (NSException *exception) {
|
|
80
|
+
NSString *message = [NSString stringWithFormat:@"Failed to schedule notification. %@", exception];
|
|
81
|
+
reject(@"ERR_NOTIFICATIONS_FAILED_TO_SCHEDULE", message, nil);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
EX_EXPORT_METHOD_AS(cancelScheduledNotificationAsync,
|
|
86
|
+
cancelNotification:(NSString *)identifier resolve:(EXPromiseResolveBlock)resolve rejecting:(EXPromiseRejectBlock)reject)
|
|
87
|
+
{
|
|
88
|
+
[[UNUserNotificationCenter currentNotificationCenter] removePendingNotificationRequestsWithIdentifiers:@[identifier]];
|
|
89
|
+
resolve(nil);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
EX_EXPORT_METHOD_AS(cancelAllScheduledNotificationsAsync,
|
|
93
|
+
cancelAllNotificationsWithResolver:(EXPromiseResolveBlock)resolve rejecting:(EXPromiseRejectBlock)reject)
|
|
94
|
+
{
|
|
95
|
+
[[UNUserNotificationCenter currentNotificationCenter] removeAllPendingNotificationRequests];
|
|
96
|
+
resolve(nil);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
EX_EXPORT_METHOD_AS(getNextTriggerDateAsync,
|
|
100
|
+
getNextTriggerDate:(NSDictionary *)triggerSpec resolve:(EXPromiseResolveBlock)resolve rejecting:(EXPromiseRejectBlock)reject)
|
|
101
|
+
{
|
|
102
|
+
@try {
|
|
103
|
+
UNNotificationTrigger *trigger = [self triggerFromParams:triggerSpec];
|
|
104
|
+
if ([trigger isKindOfClass:[UNCalendarNotificationTrigger class]]) {
|
|
105
|
+
UNCalendarNotificationTrigger *calendarTrigger = (UNCalendarNotificationTrigger *)trigger;
|
|
106
|
+
NSDate *nextTriggerDate = [calendarTrigger nextTriggerDate];
|
|
107
|
+
// We want to return milliseconds from this method.
|
|
108
|
+
resolve(nextTriggerDate ? @([nextTriggerDate timeIntervalSince1970] * 1000) : [NSNull null]);
|
|
109
|
+
} else if ([trigger isKindOfClass:[UNTimeIntervalNotificationTrigger class]]) {
|
|
110
|
+
UNTimeIntervalNotificationTrigger *timeIntervalTrigger = (UNTimeIntervalNotificationTrigger *)trigger;
|
|
111
|
+
NSDate *nextTriggerDate = [timeIntervalTrigger nextTriggerDate];
|
|
112
|
+
// We want to return milliseconds from this method.
|
|
113
|
+
resolve(nextTriggerDate ? @([nextTriggerDate timeIntervalSince1970] * 1000) : [NSNull null]);
|
|
114
|
+
} else {
|
|
115
|
+
NSString *message = [NSString stringWithFormat:@"It is not possible to get next trigger date for triggers other than calendar-based. Provided trigger resulted in %@ trigger.", NSStringFromClass([trigger class])];
|
|
116
|
+
reject(@"ERR_NOTIFICATIONS_INVALID_CALENDAR_TRIGGER", message, nil);
|
|
117
|
+
}
|
|
118
|
+
} @catch (NSException *exception) {
|
|
119
|
+
NSString *message = [NSString stringWithFormat:@"Failed to get next trigger date. %@", exception];
|
|
120
|
+
reject(@"ERR_NOTIFICATIONS_FAILED_TO_GET_NEXT_TRIGGER_DATE", message, nil);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
- (UNNotificationRequest *)buildNotificationRequestWithIdentifier:(NSString *)identifier
|
|
125
|
+
content:(NSDictionary *)contentInput
|
|
126
|
+
trigger:(NSDictionary *)triggerInput
|
|
127
|
+
{
|
|
128
|
+
UNNotificationContent *content = [_builder notificationContentFromRequest:contentInput];
|
|
129
|
+
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:[self triggerFromParams:triggerInput]];
|
|
130
|
+
return request;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
- (NSArray * _Nonnull)serializeNotificationRequests:(NSArray<UNNotificationRequest *> * _Nonnull) requests
|
|
134
|
+
{
|
|
135
|
+
NSMutableArray *serializedRequests = [NSMutableArray new];
|
|
136
|
+
for (UNNotificationRequest *request in requests) {
|
|
137
|
+
[serializedRequests addObject:[EXNotificationSerializer serializedNotificationRequest:request]];
|
|
138
|
+
}
|
|
139
|
+
return serializedRequests;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
- (UNNotificationTrigger *)triggerFromParams:(NSDictionary *)params
|
|
143
|
+
{
|
|
144
|
+
if (!params) {
|
|
145
|
+
// nil trigger is a valid trigger
|
|
146
|
+
return nil;
|
|
147
|
+
}
|
|
148
|
+
if (![params isKindOfClass:[NSDictionary class]]) {
|
|
149
|
+
NSString *reason = [NSString stringWithFormat:@"Unknown notification trigger declaration passed in, expected a dictionary, received %@.", NSStringFromClass(params.class)];
|
|
150
|
+
@throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil];
|
|
151
|
+
}
|
|
152
|
+
NSString *triggerType = params[notificationTriggerTypeKey];
|
|
153
|
+
if ([intervalNotificationTriggerType isEqualToString:triggerType]) {
|
|
154
|
+
NSNumber *interval = [params objectForKey:intervalNotificationTriggerIntervalKey verifyingClass:[NSNumber class]];
|
|
155
|
+
NSNumber *repeats = [params objectForKey:notificationTriggerRepeatsKey verifyingClass:[NSNumber class]];
|
|
156
|
+
|
|
157
|
+
return [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:[interval unsignedIntegerValue]
|
|
158
|
+
repeats:[repeats boolValue]];
|
|
159
|
+
} else if ([dateNotificationTriggerType isEqualToString:triggerType]) {
|
|
160
|
+
NSNumber *timestampMs = [params objectForKey:dateNotificationTriggerTimestampKey verifyingClass:[NSNumber class]];
|
|
161
|
+
NSUInteger timestamp = [timestampMs unsignedIntegerValue] / 1000;
|
|
162
|
+
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timestamp];
|
|
163
|
+
|
|
164
|
+
return [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:[date timeIntervalSinceNow]
|
|
165
|
+
repeats:NO];
|
|
166
|
+
|
|
167
|
+
} else if ([dailyNotificationTriggerType isEqualToString:triggerType]) {
|
|
168
|
+
NSNumber *hour = [params objectForKey:dailyNotificationTriggerHourKey verifyingClass:[NSNumber class]];
|
|
169
|
+
NSNumber *minute = [params objectForKey:dailyNotificationTriggerMinuteKey verifyingClass:[NSNumber class]];
|
|
170
|
+
NSDateComponents *dateComponents = [NSDateComponents new];
|
|
171
|
+
dateComponents.hour = [hour integerValue];
|
|
172
|
+
dateComponents.minute = [minute integerValue];
|
|
173
|
+
|
|
174
|
+
return [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:dateComponents
|
|
175
|
+
repeats:YES];
|
|
176
|
+
} else if ([weeklyNotificationTriggerType isEqualToString:triggerType]) {
|
|
177
|
+
NSNumber *weekday = [params objectForKey:weeklyNotificationTriggerWeekdayKey verifyingClass:[NSNumber class]];
|
|
178
|
+
NSNumber *hour = [params objectForKey:weeklyNotificationTriggerHourKey verifyingClass:[NSNumber class]];
|
|
179
|
+
NSNumber *minute = [params objectForKey:weeklyNotificationTriggerMinuteKey verifyingClass:[NSNumber class]];
|
|
180
|
+
NSDateComponents *dateComponents = [NSDateComponents new];
|
|
181
|
+
dateComponents.weekday = [weekday integerValue];
|
|
182
|
+
dateComponents.hour = [hour integerValue];
|
|
183
|
+
dateComponents.minute = [minute integerValue];
|
|
184
|
+
|
|
185
|
+
return [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:dateComponents
|
|
186
|
+
repeats:YES];
|
|
187
|
+
} else if ([yearlyNotificationTriggerType isEqualToString:triggerType]) {
|
|
188
|
+
NSNumber *day = [params objectForKey:yearlyNotificationTriggerDayKey verifyingClass:[NSNumber class]];
|
|
189
|
+
NSNumber *month = [params objectForKey:yearlyNotificationTriggerMonthKey verifyingClass:[NSNumber class]];
|
|
190
|
+
NSNumber *hour = [params objectForKey:yearlyNotificationTriggerHourKey verifyingClass:[NSNumber class]];
|
|
191
|
+
NSNumber *minute = [params objectForKey:yearlyNotificationTriggerMinuteKey verifyingClass:[NSNumber class]];
|
|
192
|
+
NSDateComponents *dateComponents = [NSDateComponents new];
|
|
193
|
+
dateComponents.day = [day integerValue];
|
|
194
|
+
dateComponents.month = [month integerValue] + 1; // iOS uses 1-12 based numbers for months
|
|
195
|
+
dateComponents.hour = [hour integerValue];
|
|
196
|
+
dateComponents.minute = [minute integerValue];
|
|
197
|
+
|
|
198
|
+
return [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:dateComponents
|
|
199
|
+
repeats:YES];
|
|
200
|
+
} else if ([calendarNotificationTriggerType isEqualToString:triggerType]) {
|
|
201
|
+
NSDateComponents *dateComponents = [self dateComponentsFromParams:params[calendarNotificationTriggerComponentsKey]];
|
|
202
|
+
NSNumber *repeats = [params objectForKey:notificationTriggerRepeatsKey verifyingClass:[NSNumber class]];
|
|
203
|
+
|
|
204
|
+
return [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:dateComponents
|
|
205
|
+
repeats:[repeats boolValue]];
|
|
206
|
+
} else {
|
|
207
|
+
NSString *reason = [NSString stringWithFormat:@"Unknown notification trigger type: %@.", triggerType];
|
|
208
|
+
@throw [NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
- (NSDateComponents *)dateComponentsFromParams:(NSDictionary<NSString *, id> *)params
|
|
213
|
+
{
|
|
214
|
+
NSDateComponents *dateComponents = [NSDateComponents new];
|
|
215
|
+
|
|
216
|
+
// TODO: Verify that DoW matches JS getDay()
|
|
217
|
+
dateComponents.calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierISO8601];
|
|
218
|
+
|
|
219
|
+
if ([params objectForKey:calendarNotificationTriggerTimezoneKey verifyingClass:[NSString class]]) {
|
|
220
|
+
dateComponents.timeZone = [[NSTimeZone alloc] initWithName:params[calendarNotificationTriggerTimezoneKey]];
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
for (NSString *key in [self automatchedDateComponentsKeys]) {
|
|
224
|
+
if (params[key]) {
|
|
225
|
+
NSNumber *value = [params objectForKey:key verifyingClass:[NSNumber class]];
|
|
226
|
+
[dateComponents setValue:[value unsignedIntegerValue] forComponent:[self calendarUnitFor:key]];
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return dateComponents;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
- (NSDictionary<NSString *, NSNumber *> *)dateComponentsMatchMap
|
|
234
|
+
{
|
|
235
|
+
static NSDictionary *map;
|
|
236
|
+
if (!map) {
|
|
237
|
+
map = @{
|
|
238
|
+
@"year": @(NSCalendarUnitYear),
|
|
239
|
+
@"month": @(NSCalendarUnitMonth),
|
|
240
|
+
@"day": @(NSCalendarUnitDay),
|
|
241
|
+
@"hour": @(NSCalendarUnitHour),
|
|
242
|
+
@"minute": @(NSCalendarUnitMinute),
|
|
243
|
+
@"second": @(NSCalendarUnitSecond),
|
|
244
|
+
@"weekday": @(NSCalendarUnitWeekday),
|
|
245
|
+
@"weekOfMonth": @(NSCalendarUnitWeekOfMonth),
|
|
246
|
+
@"weekOfYear": @(NSCalendarUnitWeekOfYear),
|
|
247
|
+
@"weekdayOrdinal": @(NSCalendarUnitWeekdayOrdinal)
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
return map;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
- (NSArray<NSString *> *)automatchedDateComponentsKeys
|
|
254
|
+
{
|
|
255
|
+
return [[self dateComponentsMatchMap] allKeys];
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
- (NSCalendarUnit)calendarUnitFor:(NSString *)key
|
|
259
|
+
{
|
|
260
|
+
return [[self dateComponentsMatchMap][key] unsignedIntegerValue];
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Copyright 2016-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <ExpoModulesCore/EXPermissionsInterface.h>
|
|
4
|
+
#import <EXNotifications/EXRemoteNotificationPermissionSingletonModule.h>
|
|
5
|
+
|
|
6
|
+
// TODO: Remove once we deprecate and remove "notifications" permission type
|
|
7
|
+
@interface EXLegacyRemoteNotificationPermissionRequester : NSObject <EXPermissionsRequester, EXRemoteNotificationPermissionDelegate>
|
|
8
|
+
|
|
9
|
+
- (instancetype)initWithUserNotificationPermissionRequester:(id<EXPermissionsRequester>)userNotificationPermissionRequester
|
|
10
|
+
permissionPublisher:(id<EXRemoteNotificationPermissionProgressPublisher>)permissionProgressPublisher
|
|
11
|
+
withMethodQueue:(dispatch_queue_t)methodQueue;
|
|
12
|
+
|
|
13
|
+
@end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// Copyright 2016-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXLegacyRemoteNotificationPermissionRequester.h>
|
|
4
|
+
#import <ExpoModulesCore/EXUtilities.h>
|
|
5
|
+
|
|
6
|
+
@interface EXLegacyRemoteNotificationPermissionRequester ()
|
|
7
|
+
|
|
8
|
+
@property (nonatomic, strong) EXPromiseResolveBlock resolve;
|
|
9
|
+
@property (nonatomic, strong) EXPromiseRejectBlock reject;
|
|
10
|
+
@property (nonatomic, assign) BOOL remoteNotificationsRegistrationIsPending;
|
|
11
|
+
@property (nonatomic, weak) id<EXPermissionsRequester> userNotificationPermissionRequester;
|
|
12
|
+
@property (nonatomic, weak) dispatch_queue_t methodQueue;
|
|
13
|
+
@property (nonatomic, weak) id<EXRemoteNotificationPermissionProgressPublisher> permissionProgressPublisher;
|
|
14
|
+
|
|
15
|
+
@end
|
|
16
|
+
|
|
17
|
+
@implementation EXLegacyRemoteNotificationPermissionRequester
|
|
18
|
+
|
|
19
|
+
+ (NSString *)permissionType
|
|
20
|
+
{
|
|
21
|
+
return @"notifications";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
- (instancetype)initWithUserNotificationPermissionRequester:(id<EXPermissionsRequester>)userNotificationPermissionRequester
|
|
25
|
+
permissionPublisher:(id<EXRemoteNotificationPermissionProgressPublisher>)permissionProgressPublisher
|
|
26
|
+
withMethodQueue:(dispatch_queue_t)methodQueue
|
|
27
|
+
{
|
|
28
|
+
if (self = [super init]) {
|
|
29
|
+
_remoteNotificationsRegistrationIsPending = NO;
|
|
30
|
+
_permissionProgressPublisher = permissionProgressPublisher;
|
|
31
|
+
_userNotificationPermissionRequester = userNotificationPermissionRequester;
|
|
32
|
+
_methodQueue = methodQueue;
|
|
33
|
+
}
|
|
34
|
+
return self;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
- (NSDictionary *)getPermissions
|
|
38
|
+
{
|
|
39
|
+
__block EXPermissionStatus status;
|
|
40
|
+
[EXUtilities performSynchronouslyOnMainThread:^{
|
|
41
|
+
status = (UMSharedApplication().isRegisteredForRemoteNotifications) ?
|
|
42
|
+
EXPermissionStatusGranted :
|
|
43
|
+
EXPermissionStatusUndetermined;
|
|
44
|
+
}];
|
|
45
|
+
NSMutableDictionary *permissions = [[_userNotificationPermissionRequester getPermissions] mutableCopy];
|
|
46
|
+
|
|
47
|
+
[permissions setValuesForKeysWithDictionary:@{
|
|
48
|
+
@"status": @(status),
|
|
49
|
+
|
|
50
|
+
}];
|
|
51
|
+
return permissions;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
- (void)requestPermissionsWithResolver:(EXPromiseResolveBlock)resolve rejecter:(EXPromiseRejectBlock)reject
|
|
55
|
+
{
|
|
56
|
+
if (_resolve != nil || _reject != nil) {
|
|
57
|
+
reject(@"E_AWAIT_PROMISE", @"Another request for the same permission is already being handled.", nil);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
_resolve = resolve;
|
|
62
|
+
_reject = reject;
|
|
63
|
+
|
|
64
|
+
BOOL __block isRegisteredForRemoteNotifications = NO;
|
|
65
|
+
[EXUtilities performSynchronouslyOnMainThread:^{
|
|
66
|
+
isRegisteredForRemoteNotifications = UMSharedApplication().isRegisteredForRemoteNotifications;
|
|
67
|
+
}];
|
|
68
|
+
|
|
69
|
+
if (isRegisteredForRemoteNotifications) {
|
|
70
|
+
// resolve immediately if already registered
|
|
71
|
+
[self _maybeConsumeResolverWithCurrentPermissions];
|
|
72
|
+
} else {
|
|
73
|
+
[_permissionProgressPublisher addDelegate:self];
|
|
74
|
+
EX_WEAKIFY(self)
|
|
75
|
+
[_userNotificationPermissionRequester requestPermissionsWithResolver:^(NSDictionary *permission){
|
|
76
|
+
EX_STRONGIFY(self)
|
|
77
|
+
EXPermissionStatus localNotificationsStatus = [[permission objectForKey:@"status"] intValue];
|
|
78
|
+
// We may assume that `EXLocalNotificationRequester`'s permission request will always finish
|
|
79
|
+
// when the user responds to the dialog or has already responded in the past.
|
|
80
|
+
// However, `UIApplication.registerForRemoteNotification` results in calling
|
|
81
|
+
// `application:didRegisterForRemoteNotificationsWithDeviceToken:` or
|
|
82
|
+
// `application:didFailToRegisterForRemoteNotificationsWithError:` on the application delegate
|
|
83
|
+
// ONLY when the notifications are enabled in settings (by allowing sound, alerts or app badge).
|
|
84
|
+
// So, when the local notifications are disabled, the application delegate's callbacks will not be called instantly.
|
|
85
|
+
if (localNotificationsStatus == EXPermissionStatusDenied) {
|
|
86
|
+
[self _clearObserver];
|
|
87
|
+
[self _maybeConsumeResolverWithCurrentPermissions];
|
|
88
|
+
} else {
|
|
89
|
+
self.remoteNotificationsRegistrationIsPending = YES;
|
|
90
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
91
|
+
[UMSharedApplication() registerForRemoteNotifications];
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
} rejecter:^(NSString *code, NSString *message, NSError *error){
|
|
95
|
+
[self _clearObserver];
|
|
96
|
+
if (self.reject) {
|
|
97
|
+
self.reject(code, message, error);
|
|
98
|
+
}
|
|
99
|
+
}];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
- (void)dealloc
|
|
104
|
+
{
|
|
105
|
+
[self _clearObserver];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
- (void)handleDidFinishRegisteringForRemoteNotifications
|
|
109
|
+
{
|
|
110
|
+
[self _clearObserver];
|
|
111
|
+
EX_WEAKIFY(self)
|
|
112
|
+
dispatch_async(_methodQueue, ^{
|
|
113
|
+
EX_STRONGIFY(self)
|
|
114
|
+
[self _maybeConsumeResolverWithCurrentPermissions];
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
- (void)_clearObserver
|
|
119
|
+
{
|
|
120
|
+
[_permissionProgressPublisher removeDelegate:self];
|
|
121
|
+
_remoteNotificationsRegistrationIsPending = NO;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
- (void)_maybeConsumeResolverWithCurrentPermissions
|
|
125
|
+
{
|
|
126
|
+
if (!_remoteNotificationsRegistrationIsPending) {
|
|
127
|
+
if (_resolve) {
|
|
128
|
+
_resolve([self getPermissions]);
|
|
129
|
+
_resolve = nil;
|
|
130
|
+
_reject = nil;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <ExpoModulesCore/EXExportedModule.h>
|
|
4
|
+
#import <ExpoModulesCore/EXModuleRegistryConsumer.h>
|
|
5
|
+
|
|
6
|
+
@interface EXNotificationPermissionsModule : EXExportedModule <EXModuleRegistryConsumer>
|
|
7
|
+
|
|
8
|
+
@end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXNotificationPermissionsModule.h>
|
|
4
|
+
|
|
5
|
+
#import <ExpoModulesCore/EXPermissionsInterface.h>
|
|
6
|
+
#import <ExpoModulesCore/EXPermissionsMethodsDelegate.h>
|
|
7
|
+
|
|
8
|
+
#import <EXNotifications/EXLegacyRemoteNotificationPermissionRequester.h>
|
|
9
|
+
#import <EXNotifications/EXUserFacingNotificationsPermissionsRequester.h>
|
|
10
|
+
|
|
11
|
+
@interface EXNotificationPermissionsModule ()
|
|
12
|
+
|
|
13
|
+
@property (nonatomic, weak) id<EXPermissionsInterface> permissionsManager;
|
|
14
|
+
@property (nonatomic, strong) EXUserFacingNotificationsPermissionsRequester *requester;
|
|
15
|
+
@property (nonatomic, strong) EXLegacyRemoteNotificationPermissionRequester *legacyRemoteNotificationsRequester;
|
|
16
|
+
|
|
17
|
+
@end
|
|
18
|
+
|
|
19
|
+
@implementation EXNotificationPermissionsModule
|
|
20
|
+
|
|
21
|
+
EX_EXPORT_MODULE(ExpoNotificationPermissionsModule);
|
|
22
|
+
|
|
23
|
+
- (instancetype)init
|
|
24
|
+
{
|
|
25
|
+
if (self = [super init]) {
|
|
26
|
+
_requester = [[EXUserFacingNotificationsPermissionsRequester alloc] initWithMethodQueue:self.methodQueue];
|
|
27
|
+
}
|
|
28
|
+
return self;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# pragma mark - Exported methods
|
|
32
|
+
|
|
33
|
+
EX_EXPORT_METHOD_AS(getPermissionsAsync,
|
|
34
|
+
getPermissionsAsync:(EXPromiseResolveBlock)resolve
|
|
35
|
+
rejecter:(EXPromiseRejectBlock)reject)
|
|
36
|
+
{
|
|
37
|
+
[EXPermissionsMethodsDelegate getPermissionWithPermissionsManager:_permissionsManager
|
|
38
|
+
withRequester:[EXUserFacingNotificationsPermissionsRequester class]
|
|
39
|
+
resolve:resolve
|
|
40
|
+
reject:reject];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
EX_EXPORT_METHOD_AS(requestPermissionsAsync,
|
|
44
|
+
requestPermissionsAsync:(NSDictionary *)requestedPermissions
|
|
45
|
+
requester:(EXPromiseResolveBlock)resolve
|
|
46
|
+
rejecter:(EXPromiseRejectBlock)reject)
|
|
47
|
+
{
|
|
48
|
+
[EXUserFacingNotificationsPermissionsRequester setRequestedPermissions:requestedPermissions];
|
|
49
|
+
[EXPermissionsMethodsDelegate askForPermissionWithPermissionsManager:_permissionsManager
|
|
50
|
+
withRequester:[EXUserFacingNotificationsPermissionsRequester class]
|
|
51
|
+
resolve:resolve
|
|
52
|
+
reject:reject];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# pragma mark - EXModuleRegistryConsumer
|
|
56
|
+
|
|
57
|
+
- (void)setModuleRegistry:(EXModuleRegistry *)moduleRegistry {
|
|
58
|
+
_permissionsManager = [moduleRegistry getModuleImplementingProtocol:@protocol(EXPermissionsInterface)];
|
|
59
|
+
if (!_legacyRemoteNotificationsRequester) {
|
|
60
|
+
// TODO: Remove once we deprecate and remove "notifications" permission type
|
|
61
|
+
_legacyRemoteNotificationsRequester = [[EXLegacyRemoteNotificationPermissionRequester alloc] initWithUserNotificationPermissionRequester:_requester permissionPublisher:[moduleRegistry getSingletonModuleForName:@"RemoteNotificationPermissionPublisher"] withMethodQueue:self.methodQueue];
|
|
62
|
+
}
|
|
63
|
+
[EXPermissionsMethodsDelegate registerRequesters:@[_requester, _legacyRemoteNotificationsRequester]
|
|
64
|
+
withPermissionsManager:_permissionsManager];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
#import <UIKit/UIKit.h>
|
|
5
|
+
#import <ExpoModulesCore/EXSingletonModule.h>
|
|
6
|
+
|
|
7
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
8
|
+
|
|
9
|
+
@protocol EXRemoteNotificationPermissionDelegate
|
|
10
|
+
|
|
11
|
+
- (void)handleDidFinishRegisteringForRemoteNotifications;
|
|
12
|
+
|
|
13
|
+
@end
|
|
14
|
+
|
|
15
|
+
@protocol EXRemoteNotificationPermissionProgressPublisher
|
|
16
|
+
|
|
17
|
+
- (void)addDelegate:(id<EXRemoteNotificationPermissionDelegate>)delegate;
|
|
18
|
+
- (void)removeDelegate:(id<EXRemoteNotificationPermissionDelegate>)delegate;
|
|
19
|
+
|
|
20
|
+
@end
|
|
21
|
+
|
|
22
|
+
@interface EXRemoteNotificationPermissionSingletonModule : EXSingletonModule <UIApplicationDelegate, EXRemoteNotificationPermissionProgressPublisher>
|
|
23
|
+
|
|
24
|
+
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)token;
|
|
25
|
+
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;
|
|
26
|
+
|
|
27
|
+
@end
|
|
28
|
+
|
|
29
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
|
|
2
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
3
|
+
|
|
4
|
+
#import <EXNotifications/EXRemoteNotificationPermissionSingletonModule.h>
|
|
5
|
+
#import <ExpoModulesCore/EXDefines.h>
|
|
6
|
+
|
|
7
|
+
@interface EXRemoteNotificationPermissionSingletonModule ()
|
|
8
|
+
|
|
9
|
+
@property (nonatomic, strong) NSPointerArray *delegates;
|
|
10
|
+
|
|
11
|
+
@end
|
|
12
|
+
|
|
13
|
+
@implementation EXRemoteNotificationPermissionSingletonModule
|
|
14
|
+
|
|
15
|
+
EX_REGISTER_SINGLETON_MODULE(RemoteNotificationPermissionPublisher);
|
|
16
|
+
|
|
17
|
+
- (instancetype)init
|
|
18
|
+
{
|
|
19
|
+
if (self = [super init]) {
|
|
20
|
+
_delegates = [NSPointerArray weakObjectsPointerArray];
|
|
21
|
+
}
|
|
22
|
+
return self;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
# pragma mark - UIApplicationDelegate
|
|
26
|
+
|
|
27
|
+
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)token
|
|
28
|
+
{
|
|
29
|
+
// Copying the array in case delegates remove themselves while handling the "did finish" event
|
|
30
|
+
NSPointerArray *immutableDelegates = [_delegates copy];
|
|
31
|
+
for (int i = 0; i < immutableDelegates.count; i++) {
|
|
32
|
+
id pointer = [immutableDelegates pointerAtIndex:i];
|
|
33
|
+
[pointer handleDidFinishRegisteringForRemoteNotifications];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
|
|
38
|
+
{
|
|
39
|
+
// Copying the array in case delegates remove themselves while handling the "did finish" event
|
|
40
|
+
NSPointerArray *immutableDelegates = [_delegates copy];
|
|
41
|
+
for (int i = 0; i < immutableDelegates.count; i++) {
|
|
42
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
43
|
+
[pointer handleDidFinishRegisteringForRemoteNotifications];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# pragma mark - EXNotificationCenterDelegate
|
|
48
|
+
|
|
49
|
+
- (void)addDelegate:(id<EXRemoteNotificationPermissionDelegate>)delegate
|
|
50
|
+
{
|
|
51
|
+
[_delegates addPointer:(__bridge void * _Nullable)(delegate)];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
- (void)removeDelegate:(id<EXRemoteNotificationPermissionDelegate>)delegate
|
|
55
|
+
{
|
|
56
|
+
for (int i = 0; i < _delegates.count; i++) {
|
|
57
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
58
|
+
if (pointer == (__bridge void * _Nullable)(delegate) || !pointer) {
|
|
59
|
+
[_delegates removePointerAtIndex:i];
|
|
60
|
+
i--;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// compact doesn't work, that's why we need the `|| !pointer` above
|
|
64
|
+
// http://www.openradar.me/15396578
|
|
65
|
+
[_delegates compact];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright 2019-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <ExpoModulesCore/EXPermissionsInterface.h>
|
|
4
|
+
|
|
5
|
+
@interface EXUserFacingNotificationsPermissionsRequester : NSObject <EXPermissionsRequester>
|
|
6
|
+
|
|
7
|
+
- (instancetype)initWithMethodQueue:(dispatch_queue_t)methodQueue;
|
|
8
|
+
|
|
9
|
+
- (void)requestPermissions:(NSDictionary *)permissions
|
|
10
|
+
withResolver:(EXPromiseResolveBlock)resolve
|
|
11
|
+
rejecter:(EXPromiseRejectBlock)reject;
|
|
12
|
+
|
|
13
|
+
+ (void)setRequestedPermissions:(NSDictionary *)permissions;
|
|
14
|
+
|
|
15
|
+
@end
|