@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,23 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
// @amznmod_react - Changed .native import to one without postfix
|
|
4
|
+
import NotificationCategoriesModule from './NotificationCategoriesModule';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Deletes the category associated with the provided identifier.
|
|
8
|
+
* @param identifier Identifier initially provided to `setNotificationCategoryAsync` when creating the category.
|
|
9
|
+
* @return A Promise which resolves to `true` if the category was successfully deleted, or `false` if it was not.
|
|
10
|
+
* An example of when this method would return `false` is if you try to delete a category that doesn't exist.
|
|
11
|
+
* @platform android
|
|
12
|
+
* @platform ios
|
|
13
|
+
* @header categories
|
|
14
|
+
*/
|
|
15
|
+
export default async function deleteNotificationCategoryAsync(
|
|
16
|
+
identifier: string
|
|
17
|
+
): Promise<boolean> {
|
|
18
|
+
if (!NotificationCategoriesModule.deleteNotificationCategoryAsync) {
|
|
19
|
+
throw new UnavailabilityError('Notifications', 'deleteNotificationCategoryAsync');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return await NotificationCategoriesModule.deleteNotificationCategoryAsync(identifier);
|
|
23
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationChannelManager from './NotificationChannelManager';
|
|
4
|
+
|
|
5
|
+
export default async function deleteNotificationChannelAsync(channelId: string): Promise<void> {
|
|
6
|
+
if (!NotificationChannelManager.deleteNotificationChannelAsync) {
|
|
7
|
+
throw new UnavailabilityError('Notifications', 'deleteNotificationChannelAsync');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return await NotificationChannelManager.deleteNotificationChannelAsync(channelId);
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes the notification channel.
|
|
3
|
+
* @param channelId The channel identifier.
|
|
4
|
+
* @return A Promise which resolving once the channel is removed (or if there was no channel for given identifier).
|
|
5
|
+
* @platform android
|
|
6
|
+
* @header channels
|
|
7
|
+
*/
|
|
8
|
+
export default async function deleteNotificationChannelAsync(channelId: string): Promise<void> {
|
|
9
|
+
console.debug('Notification channels feature is only supported on Android.');
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationChannelGroupManager from './NotificationChannelGroupManager';
|
|
4
|
+
|
|
5
|
+
export default async function deleteNotificationChannelAsync(groupId: string): Promise<void> {
|
|
6
|
+
if (!NotificationChannelGroupManager.deleteNotificationChannelGroupAsync) {
|
|
7
|
+
throw new UnavailabilityError('Notifications', 'deleteNotificationChannelGroupAsync');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return await NotificationChannelGroupManager.deleteNotificationChannelGroupAsync(groupId);
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Removes the notification channel group and all notification channels that belong to it.
|
|
3
|
+
* @param groupId The channel group identifier.
|
|
4
|
+
* @return A Promise which resolves once the channel group is removed (or if there was no channel group for given identifier).
|
|
5
|
+
* @platform android
|
|
6
|
+
* @header channels
|
|
7
|
+
*/
|
|
8
|
+
export default async function deleteNotificationChannelGroupAsync(groupId: string): Promise<void> {
|
|
9
|
+
console.debug('Notification channels feature is only supported on Android.');
|
|
10
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationPresenter from './NotificationPresenterModule';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Removes all application's notifications displayed in the notification tray (Notification Center).
|
|
7
|
+
* @return A Promise which resolves once the request to dismiss the notifications is successfully dispatched to the notifications manager.
|
|
8
|
+
* @header dismiss
|
|
9
|
+
*/
|
|
10
|
+
export default async function dismissAllNotificationsAsync(): Promise<void> {
|
|
11
|
+
if (!NotificationPresenter.dismissAllNotificationsAsync) {
|
|
12
|
+
throw new UnavailabilityError('Notifications', 'dismissAllNotificationsAsync');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return await NotificationPresenter.dismissAllNotificationsAsync();
|
|
16
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationPresenter from './NotificationPresenterModule';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Removes notification displayed in the notification tray (Notification Center).
|
|
7
|
+
* @param notificationIdentifier The notification identifier, obtained either via `setNotificationHandler` method or in the listener added with `addNotificationReceivedListener`.
|
|
8
|
+
* @return A Promise which resolves once the request to dismiss the notification is successfully dispatched to the notifications manager.
|
|
9
|
+
* @header dismiss
|
|
10
|
+
*/
|
|
11
|
+
export default async function dismissNotificationAsync(
|
|
12
|
+
notificationIdentifier: string
|
|
13
|
+
): Promise<void> {
|
|
14
|
+
if (!NotificationPresenter.dismissNotificationAsync) {
|
|
15
|
+
throw new UnavailabilityError('Notifications', 'dismissNotificationAsync');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return await NotificationPresenter.dismissNotificationAsync(notificationIdentifier);
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationScheduler from './NotificationScheduler';
|
|
4
|
+
import { NotificationRequest } from './Notifications.types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Fetches information about all scheduled notifications.
|
|
8
|
+
* @return Returns a Promise resolving to an array of objects conforming to the [`Notification`](#notification) interface.
|
|
9
|
+
* @header schedule
|
|
10
|
+
*/
|
|
11
|
+
export default async function getAllScheduledNotificationsAsync(): Promise<NotificationRequest[]> {
|
|
12
|
+
if (!NotificationScheduler.getAllScheduledNotificationsAsync) {
|
|
13
|
+
throw new UnavailabilityError('Notifications', 'getAllScheduledNotificationsAsync');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return await NotificationScheduler.getAllScheduledNotificationsAsync();
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import BadgeModule from './BadgeModule';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Fetches the number currently set as the badge of the app icon on device's home screen. A `0` value means that the badge is not displayed.
|
|
7
|
+
* > **Note:** Not all Android launchers support application badges. If the launcher does not support icon badges, the method will always resolve to `0`.
|
|
8
|
+
* @return Returns a Promise resolving to a number that represents the current badge of the app icon.
|
|
9
|
+
* @header badge
|
|
10
|
+
*/
|
|
11
|
+
export default async function getBadgeCountAsync(): Promise<number> {
|
|
12
|
+
if (!BadgeModule.getBadgeCountAsync) {
|
|
13
|
+
throw new UnavailabilityError('ExpoNotifications', 'getBadgeCountAsync');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return await BadgeModule.getBadgeCountAsync();
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { UnavailabilityError, Platform } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import PushTokenManager from './PushTokenManager';
|
|
4
|
+
import { DevicePushToken } from './Tokens.types';
|
|
5
|
+
|
|
6
|
+
let nativeTokenPromise: Promise<string> | null = null;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Returns a native FCM, APNs token or a [`PushSubscription` data](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription)
|
|
10
|
+
* that can be used with another push notification service.
|
|
11
|
+
* @header fetch
|
|
12
|
+
*/
|
|
13
|
+
export default async function getDevicePushTokenAsync(): Promise<DevicePushToken> {
|
|
14
|
+
if (!PushTokenManager.getDevicePushTokenAsync) {
|
|
15
|
+
throw new UnavailabilityError('ExpoNotifications', 'getDevicePushTokenAsync');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let devicePushToken: string | null;
|
|
19
|
+
if (nativeTokenPromise) {
|
|
20
|
+
// Reuse existing Promise
|
|
21
|
+
devicePushToken = await nativeTokenPromise;
|
|
22
|
+
} else {
|
|
23
|
+
// Create a new Promise and clear it afterwards
|
|
24
|
+
nativeTokenPromise = PushTokenManager.getDevicePushTokenAsync();
|
|
25
|
+
devicePushToken = await nativeTokenPromise;
|
|
26
|
+
nativeTokenPromise = null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// @ts-ignore: TS thinks Platform.OS could be anything and can't decide what type is it
|
|
30
|
+
return { type: Platform.OS, data: devicePushToken };
|
|
31
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import Constants from '@amazon-devices/expo-constants';
|
|
2
|
+
import { CodedError, Platform, SyntheticPlatformEmitter } from 'expo-modules-core';
|
|
3
|
+
|
|
4
|
+
import { DevicePushToken } from './Tokens.types';
|
|
5
|
+
|
|
6
|
+
export default async function getDevicePushTokenAsync(): Promise<DevicePushToken> {
|
|
7
|
+
const data = await _subscribeDeviceToPushNotificationsAsync();
|
|
8
|
+
SyntheticPlatformEmitter.emit('onDevicePushToken', { devicePushToken: data });
|
|
9
|
+
return { type: Platform.OS, data };
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function guardPermission() {
|
|
13
|
+
if (!('Notification' in window)) {
|
|
14
|
+
throw new CodedError(
|
|
15
|
+
'ERR_UNAVAILABLE',
|
|
16
|
+
'The Web Notifications API is not available on this device.'
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
if (!navigator.serviceWorker) {
|
|
20
|
+
throw new CodedError(
|
|
21
|
+
'ERR_UNAVAILABLE',
|
|
22
|
+
'Notifications cannot be used because the service worker API is not supported on this device. This might also happen because your web page does not support HTTPS.'
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
if (Notification.permission !== 'granted') {
|
|
26
|
+
throw new CodedError(
|
|
27
|
+
'ERR_NOTIFICATIONS_PERMISSION_DENIED',
|
|
28
|
+
`Cannot use web notifications without permissions granted. Request permissions with "expo-permissions".`
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async function _subscribeDeviceToPushNotificationsAsync(): Promise<DevicePushToken['data']> {
|
|
34
|
+
// @ts-expect-error: TODO: not on the schema
|
|
35
|
+
const vapidPublicKey: string | null = Constants.expoConfig?.notification?.vapidPublicKey;
|
|
36
|
+
if (!vapidPublicKey) {
|
|
37
|
+
throw new CodedError(
|
|
38
|
+
'ERR_NOTIFICATIONS_PUSH_WEB_MISSING_CONFIG',
|
|
39
|
+
'You must provide `notification.vapidPublicKey` in `app.json` to use push notifications on web. Learn more: https://docs.expo.dev/versions/latest/guides/using-vapid/.'
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// @ts-expect-error: TODO: not on the schema
|
|
44
|
+
const serviceWorkerPath = Constants.expoConfig?.notification?.serviceWorkerPath;
|
|
45
|
+
if (!serviceWorkerPath) {
|
|
46
|
+
throw new CodedError(
|
|
47
|
+
'ERR_NOTIFICATIONS_PUSH_MISSING_CONFIGURATION',
|
|
48
|
+
'You must specify `notification.serviceWorkerPath` in `app.json` to use push notifications on the web. Please provide the path to the service worker that will handle notifications.'
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
guardPermission();
|
|
52
|
+
|
|
53
|
+
let registration: ServiceWorkerRegistration | null = null;
|
|
54
|
+
try {
|
|
55
|
+
registration = await navigator.serviceWorker.register(serviceWorkerPath);
|
|
56
|
+
} catch (error) {
|
|
57
|
+
throw new CodedError(
|
|
58
|
+
'ERR_NOTIFICATIONS_PUSH_REGISTRATION_FAILED',
|
|
59
|
+
`Could not register this device for push notifications because the service worker (${serviceWorkerPath}) could not be registered: ${error}`
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
await navigator.serviceWorker.ready;
|
|
63
|
+
|
|
64
|
+
if (!registration.active) {
|
|
65
|
+
throw new CodedError(
|
|
66
|
+
'ERR_NOTIFICATIONS_PUSH_REGISTRATION_FAILED',
|
|
67
|
+
'Could not register this device for push notifications because the service worker is not active.'
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const subscribeOptions = {
|
|
72
|
+
userVisibleOnly: true,
|
|
73
|
+
applicationServerKey: _urlBase64ToUint8Array(vapidPublicKey),
|
|
74
|
+
};
|
|
75
|
+
let pushSubscription: PushSubscription | null = null;
|
|
76
|
+
try {
|
|
77
|
+
// @ts-ignore
|
|
78
|
+
pushSubscription = await registration.pushManager.subscribe(subscribeOptions);
|
|
79
|
+
} catch (error) {
|
|
80
|
+
throw new CodedError(
|
|
81
|
+
'ERR_NOTIFICATIONS_PUSH_REGISTRATION_FAILED',
|
|
82
|
+
'The device was unable to register for remote notifications with the browser endpoint. (' +
|
|
83
|
+
error +
|
|
84
|
+
')'
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
const pushSubscriptionJson = pushSubscription.toJSON();
|
|
88
|
+
|
|
89
|
+
const subscriptionObject = {
|
|
90
|
+
endpoint: pushSubscriptionJson.endpoint,
|
|
91
|
+
keys: {
|
|
92
|
+
p256dh: pushSubscriptionJson.keys!.p256dh,
|
|
93
|
+
auth: pushSubscriptionJson.keys!.auth,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// Store notification icon string in service worker.
|
|
98
|
+
// This message is received by `/expo-service-worker.js`.
|
|
99
|
+
// We wrap it with `fromExpoWebClient` to make sure other message
|
|
100
|
+
// will not override content such as `notificationIcon`.
|
|
101
|
+
// https://stackoverflow.com/a/35729334/2603230
|
|
102
|
+
const notificationIcon = (Constants.expoConfig?.notification ?? {}).icon;
|
|
103
|
+
await registration.active.postMessage(
|
|
104
|
+
JSON.stringify({ fromExpoWebClient: { notificationIcon } })
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
return subscriptionObject;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// https://github.com/web-push-libs/web-push#using-vapid-key-for-applicationserverkey
|
|
111
|
+
function _urlBase64ToUint8Array(base64String: string): Uint8Array {
|
|
112
|
+
const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
|
|
113
|
+
const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
|
|
114
|
+
|
|
115
|
+
const rawData = window.atob(base64);
|
|
116
|
+
const outputArray = new Uint8Array(rawData.length);
|
|
117
|
+
|
|
118
|
+
for (let i = 0; i < rawData.length; ++i) {
|
|
119
|
+
outputArray[i] = rawData.charCodeAt(i);
|
|
120
|
+
}
|
|
121
|
+
return outputArray;
|
|
122
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import * as Application from '@amazon-devices/expo-application';
|
|
2
|
+
import Constants from '@amazon-devices/expo-constants';
|
|
3
|
+
import { Platform, CodedError, UnavailabilityError } from 'expo-modules-core';
|
|
4
|
+
|
|
5
|
+
import { setAutoServerRegistrationEnabledAsync } from './DevicePushTokenAutoRegistration.fx';
|
|
6
|
+
import ServerRegistrationModule from './ServerRegistrationModule';
|
|
7
|
+
import { DevicePushToken, ExpoPushToken, ExpoPushTokenOptions } from './Tokens.types';
|
|
8
|
+
import getDevicePushTokenAsync from './getDevicePushTokenAsync';
|
|
9
|
+
|
|
10
|
+
const productionBaseUrl = 'https://exp.host/--/api/v2/';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Returns an Expo token that can be used to send a push notification to the device using Expo's push notifications service.
|
|
14
|
+
*
|
|
15
|
+
* This method makes requests to the Expo's servers. It can get rejected in cases where the request itself fails
|
|
16
|
+
* (for example, due to the device being offline, experiencing a network timeout, or other HTTPS request failures).
|
|
17
|
+
* To provide offline support to your users, you should `try/catch` this method and implement retry logic to attempt
|
|
18
|
+
* to get the push token later, once the device is back online.
|
|
19
|
+
*
|
|
20
|
+
* > For Expo's backend to be able to send notifications to your app, you will need to provide it with push notification keys.
|
|
21
|
+
* For more information, see [credentials](/push-notifications/push-notifications-setup/#get-credentials-for-development-builds) in the push notifications setup.
|
|
22
|
+
*
|
|
23
|
+
* @param options Object allowing you to pass in push notification configuration.
|
|
24
|
+
* @return Returns a `Promise` that resolves to an object representing acquired push token.
|
|
25
|
+
* @header fetch
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import * as Notifications from '@amazon-devices/expo-notifications';
|
|
30
|
+
*
|
|
31
|
+
* export async function registerForPushNotificationsAsync(userId: string) {
|
|
32
|
+
* const expoPushToken = await Notifications.getExpoPushTokenAsync({
|
|
33
|
+
* projectId: 'your-project-id',
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* await fetch('https://example.com/', {
|
|
37
|
+
* method: 'POST',
|
|
38
|
+
* headers: {
|
|
39
|
+
* 'Content-Type': 'application/json',
|
|
40
|
+
* },
|
|
41
|
+
* body: JSON.stringify({
|
|
42
|
+
* userId,
|
|
43
|
+
* expoPushToken,
|
|
44
|
+
* }),
|
|
45
|
+
* });
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export default async function getExpoPushTokenAsync(
|
|
50
|
+
options: ExpoPushTokenOptions = {}
|
|
51
|
+
): Promise<ExpoPushToken> {
|
|
52
|
+
const devicePushToken = options.devicePushToken || (await getDevicePushTokenAsync());
|
|
53
|
+
|
|
54
|
+
const deviceId = options.deviceId || (await getDeviceIdAsync());
|
|
55
|
+
const projectId = options.projectId || Constants.easConfig?.projectId;
|
|
56
|
+
|
|
57
|
+
if (!projectId) {
|
|
58
|
+
console.warn(
|
|
59
|
+
'Calling getExpoPushTokenAsync without specifying a projectId is deprecated and will no longer be supported in SDK 49+'
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (!projectId) {
|
|
64
|
+
throw new CodedError(
|
|
65
|
+
'ERR_NOTIFICATIONS_NO_EXPERIENCE_ID',
|
|
66
|
+
"No 'projectId' found. If 'projectId' can't be inferred from the manifest (eg. in bare workflow), you have to pass it in yourself."
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const applicationId = options.applicationId || Application.applicationId;
|
|
71
|
+
if (!applicationId) {
|
|
72
|
+
throw new CodedError(
|
|
73
|
+
'ERR_NOTIFICATIONS_NO_APPLICATION_ID',
|
|
74
|
+
"No applicationId found. If it can't be inferred from native configuration by expo-application, you have to pass it in yourself."
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
const type = options.type || getTypeOfToken(devicePushToken);
|
|
78
|
+
const development = options.development || (await shouldUseDevelopmentNotificationService());
|
|
79
|
+
|
|
80
|
+
const baseUrl = options.baseUrl ?? productionBaseUrl;
|
|
81
|
+
const url = options.url ?? `${baseUrl}push/getExpoPushToken`;
|
|
82
|
+
|
|
83
|
+
const body = {
|
|
84
|
+
type,
|
|
85
|
+
deviceId: deviceId.toLowerCase(),
|
|
86
|
+
development,
|
|
87
|
+
appId: applicationId,
|
|
88
|
+
deviceToken: getDeviceToken(devicePushToken),
|
|
89
|
+
projectId,
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const response = await fetch(url, {
|
|
93
|
+
method: 'POST',
|
|
94
|
+
headers: {
|
|
95
|
+
'content-type': 'application/json',
|
|
96
|
+
},
|
|
97
|
+
body: JSON.stringify(body),
|
|
98
|
+
}).catch((error) => {
|
|
99
|
+
throw new CodedError(
|
|
100
|
+
'ERR_NOTIFICATIONS_NETWORK_ERROR',
|
|
101
|
+
`Error encountered while fetching Expo token: ${error}.`
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
if (!response.ok) {
|
|
106
|
+
const statusInfo = response.statusText || response.status;
|
|
107
|
+
let body: string | undefined = undefined;
|
|
108
|
+
try {
|
|
109
|
+
body = await response.text();
|
|
110
|
+
} catch {
|
|
111
|
+
// do nothing
|
|
112
|
+
}
|
|
113
|
+
throw new CodedError(
|
|
114
|
+
'ERR_NOTIFICATIONS_SERVER_ERROR',
|
|
115
|
+
`Error encountered while fetching Expo token, expected an OK response, received: ${statusInfo} (body: "${body}").`
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const expoPushToken = getExpoPushToken(await parseResponse(response));
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
if (options.url || options.baseUrl) {
|
|
123
|
+
console.debug(
|
|
124
|
+
`[expo-notifications] Since the URL endpoint to register in has been customized in the options, expo-notifications won't try to auto-update the device push token on the server.`
|
|
125
|
+
);
|
|
126
|
+
} else {
|
|
127
|
+
await setAutoServerRegistrationEnabledAsync(true);
|
|
128
|
+
}
|
|
129
|
+
} catch (e) {
|
|
130
|
+
console.warn(
|
|
131
|
+
'[expo-notifications] Could not enable automatically registering new device tokens with the Expo notification service',
|
|
132
|
+
e
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return {
|
|
137
|
+
type: 'expo',
|
|
138
|
+
data: expoPushToken,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
async function parseResponse(response: Response) {
|
|
143
|
+
try {
|
|
144
|
+
return await response.json();
|
|
145
|
+
} catch {
|
|
146
|
+
try {
|
|
147
|
+
throw new CodedError(
|
|
148
|
+
'ERR_NOTIFICATIONS_SERVER_ERROR',
|
|
149
|
+
`Expected a JSON response from server when fetching Expo token, received body: ${JSON.stringify(
|
|
150
|
+
await response.text()
|
|
151
|
+
)}.`
|
|
152
|
+
);
|
|
153
|
+
} catch {
|
|
154
|
+
throw new CodedError(
|
|
155
|
+
'ERR_NOTIFICATIONS_SERVER_ERROR',
|
|
156
|
+
`Expected a JSON response from server when fetching Expo token, received response: ${JSON.stringify(
|
|
157
|
+
response
|
|
158
|
+
)}.`
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function getExpoPushToken(data: any) {
|
|
165
|
+
if (
|
|
166
|
+
!data ||
|
|
167
|
+
!(typeof data === 'object') ||
|
|
168
|
+
!data.data ||
|
|
169
|
+
!(typeof data.data === 'object') ||
|
|
170
|
+
!data.data.expoPushToken ||
|
|
171
|
+
!(typeof data.data.expoPushToken === 'string')
|
|
172
|
+
) {
|
|
173
|
+
throw new CodedError(
|
|
174
|
+
'ERR_NOTIFICATIONS_SERVER_ERROR',
|
|
175
|
+
`Malformed response from server, expected "{ data: { expoPushToken: string } }", received: ${JSON.stringify(
|
|
176
|
+
data,
|
|
177
|
+
null,
|
|
178
|
+
2
|
|
179
|
+
)}.`
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return data.data.expoPushToken as string;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Same as in DevicePushTokenAutoRegistration
|
|
187
|
+
async function getDeviceIdAsync() {
|
|
188
|
+
try {
|
|
189
|
+
if (!ServerRegistrationModule.getInstallationIdAsync) {
|
|
190
|
+
throw new UnavailabilityError('ExpoServerRegistrationModule', 'getInstallationIdAsync');
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return await ServerRegistrationModule.getInstallationIdAsync();
|
|
194
|
+
} catch (e) {
|
|
195
|
+
throw new CodedError(
|
|
196
|
+
'ERR_NOTIF_DEVICE_ID',
|
|
197
|
+
`Could not have fetched installation ID of the application: ${e}.`
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
function getDeviceToken(devicePushToken: DevicePushToken) {
|
|
203
|
+
if (typeof devicePushToken.data === 'string') {
|
|
204
|
+
return devicePushToken.data;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return JSON.stringify(devicePushToken.data);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Same as in DevicePushTokenAutoRegistration
|
|
211
|
+
async function shouldUseDevelopmentNotificationService() {
|
|
212
|
+
if (Platform.OS === 'ios') {
|
|
213
|
+
try {
|
|
214
|
+
const notificationServiceEnvironment =
|
|
215
|
+
await Application.getIosPushNotificationServiceEnvironmentAsync();
|
|
216
|
+
if (notificationServiceEnvironment === 'development') {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
} catch {
|
|
220
|
+
// We can't do anything here, we'll fallback to false then.
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Same as in DevicePushTokenAutoRegistration
|
|
228
|
+
function getTypeOfToken(devicePushToken: DevicePushToken) {
|
|
229
|
+
switch (devicePushToken.type) {
|
|
230
|
+
case 'ios':
|
|
231
|
+
return 'apns';
|
|
232
|
+
case 'android':
|
|
233
|
+
return 'fcm';
|
|
234
|
+
// This probably will error on server, but let's make this function future-safe.
|
|
235
|
+
default:
|
|
236
|
+
return devicePushToken.type;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationScheduler from './NotificationScheduler';
|
|
4
|
+
import { SchedulableNotificationTriggerInput } from './Notifications.types';
|
|
5
|
+
import { parseTrigger } from './scheduleNotificationAsync';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Allows you to check what will be the next trigger date for given notification trigger input.
|
|
9
|
+
* @param trigger The schedulable notification trigger you would like to check next trigger date for (of type [`SchedulableNotificationTriggerInput`](#schedulablenotificationtriggerinput)).
|
|
10
|
+
* @return If the return value is `null`, the notification won't be triggered. Otherwise, the return value is the Unix timestamp in milliseconds
|
|
11
|
+
* at which the notification will be triggered.
|
|
12
|
+
* @example Calculate next trigger date for a notification trigger:
|
|
13
|
+
* ```ts
|
|
14
|
+
* import * as Notifications from '@amazon-devices/expo-notifications';
|
|
15
|
+
*
|
|
16
|
+
* async function logNextTriggerDate() {
|
|
17
|
+
* try {
|
|
18
|
+
* const nextTriggerDate = await Notifications.getNextTriggerDateAsync({
|
|
19
|
+
* hour: 9,
|
|
20
|
+
* minute: 0,
|
|
21
|
+
* });
|
|
22
|
+
* console.log(nextTriggerDate === null ? 'No next trigger date' : new Date(nextTriggerDate));
|
|
23
|
+
* } catch (e) {
|
|
24
|
+
* console.warn(`Couldn't have calculated next trigger date: ${e}`);
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
* @header schedule
|
|
29
|
+
*/
|
|
30
|
+
export default async function getNextTriggerDateAsync(
|
|
31
|
+
trigger: SchedulableNotificationTriggerInput
|
|
32
|
+
): Promise<number | null> {
|
|
33
|
+
if (!NotificationScheduler.getNextTriggerDateAsync) {
|
|
34
|
+
throw new UnavailabilityError('ExpoNotifications', 'getNextTriggerDateAsync');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return await NotificationScheduler.getNextTriggerDateAsync(parseTrigger(trigger));
|
|
38
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
// @amznmod_react - Changed .native import to one without postfix
|
|
4
|
+
import NotificationCategoriesModule from './NotificationCategoriesModule';
|
|
5
|
+
import { NotificationCategory } from './Notifications.types';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Fetches information about all known notification categories.
|
|
9
|
+
* @return A Promise which resolves to an array of `NotificationCategory`s. On platforms that do not support notification channels,
|
|
10
|
+
* it will always resolve to an empty array.
|
|
11
|
+
* @platform android
|
|
12
|
+
* @platform ios
|
|
13
|
+
* @header categories
|
|
14
|
+
*/
|
|
15
|
+
export default async function getNotificationCategoriesAsync(): Promise<NotificationCategory[]> {
|
|
16
|
+
if (!NotificationCategoriesModule.getNotificationCategoriesAsync) {
|
|
17
|
+
throw new UnavailabilityError('Notifications', 'getNotificationCategoriesAsync');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return await NotificationCategoriesModule.getNotificationCategoriesAsync();
|
|
21
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationChannelManager from './NotificationChannelManager';
|
|
4
|
+
import { NotificationChannel } from './NotificationChannelManager.types';
|
|
5
|
+
|
|
6
|
+
export default async function getNotificationChannelAsync(
|
|
7
|
+
channelId: string
|
|
8
|
+
): Promise<NotificationChannel | null> {
|
|
9
|
+
if (!NotificationChannelManager.getNotificationChannelAsync) {
|
|
10
|
+
throw new UnavailabilityError('Notifications', 'getNotificationChannelAsync');
|
|
11
|
+
}
|
|
12
|
+
return await NotificationChannelManager.getNotificationChannelAsync(channelId);
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NotificationChannel } from './NotificationChannelManager.types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fetches information about a single notification channel.
|
|
5
|
+
* @param channelId The channel's identifier.
|
|
6
|
+
* @return A Promise which resolves to the channel object (of type [`NotificationChannel`](#notificationchannel)) or to `null`
|
|
7
|
+
* if there was no channel found for this identifier. On platforms that do not support notification channels, it will always resolve to `null`.
|
|
8
|
+
* @platform android
|
|
9
|
+
* @header channels
|
|
10
|
+
*/
|
|
11
|
+
export default async function getNotificationChannelAsync(
|
|
12
|
+
channelId: string
|
|
13
|
+
): Promise<NotificationChannel | null> {
|
|
14
|
+
console.debug('Notification channels feature is only supported on Android.');
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationChannelGroupManager from './NotificationChannelGroupManager';
|
|
4
|
+
import { NotificationChannelGroup } from './NotificationChannelGroupManager.types';
|
|
5
|
+
|
|
6
|
+
export default async function getNotificationChannelGroupAsync(
|
|
7
|
+
groupId: string
|
|
8
|
+
): Promise<NotificationChannelGroup | null> {
|
|
9
|
+
if (!NotificationChannelGroupManager.getNotificationChannelGroupAsync) {
|
|
10
|
+
throw new UnavailabilityError('Notifications', 'getNotificationChannelGroupAsync');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return await NotificationChannelGroupManager.getNotificationChannelGroupAsync(groupId);
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NotificationChannelGroup } from './NotificationChannelGroupManager.types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fetches information about a single notification channel group.
|
|
5
|
+
* @param groupId The channel group's identifier.
|
|
6
|
+
* @return A Promise which resolves to the channel group object (of type [`NotificationChannelGroup`](#notificationchannelgroup))
|
|
7
|
+
* or to `null` if there was no channel group found for this identifier. On platforms that do not support notification channels,
|
|
8
|
+
* it will always resolve to `null`.
|
|
9
|
+
* @platform android
|
|
10
|
+
* @header channels
|
|
11
|
+
*/
|
|
12
|
+
export default async function getNotificationChannelGroupAsync(
|
|
13
|
+
groupId: string
|
|
14
|
+
): Promise<NotificationChannelGroup | null> {
|
|
15
|
+
console.debug('Notification channels feature is only supported on Android.');
|
|
16
|
+
return null;
|
|
17
|
+
}
|