@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,335 @@
|
|
|
1
|
+
import * as Crypto from '@amazon-devices/expo-crypto';
|
|
2
|
+
import { Platform, UnavailabilityError } from 'expo-modules-core';
|
|
3
|
+
|
|
4
|
+
import NotificationScheduler from './NotificationScheduler';
|
|
5
|
+
import { NotificationTriggerInput as NativeNotificationTriggerInput } from './NotificationScheduler.types';
|
|
6
|
+
import {
|
|
7
|
+
NotificationRequestInput,
|
|
8
|
+
NotificationTriggerInput,
|
|
9
|
+
DailyTriggerInput,
|
|
10
|
+
WeeklyTriggerInput,
|
|
11
|
+
YearlyTriggerInput,
|
|
12
|
+
CalendarTriggerInput,
|
|
13
|
+
TimeIntervalTriggerInput,
|
|
14
|
+
DateTriggerInput,
|
|
15
|
+
ChannelAwareTriggerInput,
|
|
16
|
+
SchedulableNotificationTriggerInput,
|
|
17
|
+
} from './Notifications.types';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Schedules a notification to be triggered in the future.
|
|
21
|
+
* > **Note:** Please note that this does not mean that the notification will be presented when it is triggered.
|
|
22
|
+
* For the notification to be presented you have to set a notification handler with [`setNotificationHandler`](#notificationssetnotificationhandlerhandler)
|
|
23
|
+
* that will return an appropriate notification behavior. For more information see the example below.
|
|
24
|
+
* @param request An object describing the notification to be triggered.
|
|
25
|
+
* @return Returns a Promise resolving to a string which is a notification identifier you can later use to cancel the notification or to identify an incoming notification.
|
|
26
|
+
* @example
|
|
27
|
+
* # Schedule the notification that will trigger once, in one minute from now
|
|
28
|
+
* ```ts
|
|
29
|
+
* import * as Notifications from '@amazon-devices/expo-notifications';
|
|
30
|
+
*
|
|
31
|
+
* Notifications.scheduleNotificationAsync({
|
|
32
|
+
* content: {
|
|
33
|
+
* title: "Time's up!",
|
|
34
|
+
* body: 'Change sides!',
|
|
35
|
+
* },
|
|
36
|
+
* trigger: {
|
|
37
|
+
* seconds: 60,
|
|
38
|
+
* },
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* # Schedule the notification that will trigger repeatedly, every 20 minutes
|
|
43
|
+
* ```ts
|
|
44
|
+
* import * as Notifications from '@amazon-devices/expo-notifications';
|
|
45
|
+
*
|
|
46
|
+
* Notifications.scheduleNotificationAsync({
|
|
47
|
+
* content: {
|
|
48
|
+
* title: 'Remember to drink water!',
|
|
49
|
+
* },
|
|
50
|
+
* trigger: {
|
|
51
|
+
* seconds: 60 * 20,
|
|
52
|
+
* repeats: true,
|
|
53
|
+
* },
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* # Schedule the notification that will trigger once, at the beginning of next hour
|
|
58
|
+
* ```ts
|
|
59
|
+
* import * as Notifications from '@amazon-devices/expo-notifications';
|
|
60
|
+
*
|
|
61
|
+
* const trigger = new Date(Date.now() + 60 * 60 * 1000);
|
|
62
|
+
* trigger.setMinutes(0);
|
|
63
|
+
* trigger.setSeconds(0);
|
|
64
|
+
*
|
|
65
|
+
* Notifications.scheduleNotificationAsync({
|
|
66
|
+
* content: {
|
|
67
|
+
* title: 'Happy new hour!',
|
|
68
|
+
* },
|
|
69
|
+
* trigger,
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
* @header schedule
|
|
73
|
+
*/
|
|
74
|
+
export default async function scheduleNotificationAsync(
|
|
75
|
+
request: NotificationRequestInput
|
|
76
|
+
): Promise<string> {
|
|
77
|
+
if (!NotificationScheduler.scheduleNotificationAsync) {
|
|
78
|
+
throw new UnavailabilityError('Notifications', 'scheduleNotificationAsync');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return await NotificationScheduler.scheduleNotificationAsync(
|
|
82
|
+
request.identifier ?? Crypto.randomUUID(),
|
|
83
|
+
request.content,
|
|
84
|
+
parseTrigger(request.trigger)
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
type ValidTriggerDateComponents = 'month' | 'day' | 'weekday' | 'hour' | 'minute';
|
|
89
|
+
|
|
90
|
+
const DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS: readonly ValidTriggerDateComponents[] = [
|
|
91
|
+
'hour',
|
|
92
|
+
'minute',
|
|
93
|
+
];
|
|
94
|
+
const WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS: readonly ValidTriggerDateComponents[] = [
|
|
95
|
+
'weekday',
|
|
96
|
+
'hour',
|
|
97
|
+
'minute',
|
|
98
|
+
];
|
|
99
|
+
const YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS: readonly ValidTriggerDateComponents[] = [
|
|
100
|
+
'day',
|
|
101
|
+
'month',
|
|
102
|
+
'hour',
|
|
103
|
+
'minute',
|
|
104
|
+
];
|
|
105
|
+
|
|
106
|
+
export function parseTrigger(
|
|
107
|
+
userFacingTrigger: NotificationTriggerInput
|
|
108
|
+
): NativeNotificationTriggerInput {
|
|
109
|
+
if (userFacingTrigger === null) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (userFacingTrigger === undefined) {
|
|
114
|
+
throw new TypeError(
|
|
115
|
+
'Encountered an `undefined` notification trigger. If you want to trigger the notification immediately, pass in an explicit `null` value.'
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (isDateTrigger(userFacingTrigger)) {
|
|
120
|
+
return parseDateTrigger(userFacingTrigger);
|
|
121
|
+
} else if (isDailyTriggerInput(userFacingTrigger)) {
|
|
122
|
+
validateDateComponentsInTrigger(userFacingTrigger, DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS);
|
|
123
|
+
return {
|
|
124
|
+
type: 'daily',
|
|
125
|
+
channelId: userFacingTrigger.channelId,
|
|
126
|
+
hour: userFacingTrigger.hour,
|
|
127
|
+
minute: userFacingTrigger.minute,
|
|
128
|
+
};
|
|
129
|
+
} else if (isWeeklyTriggerInput(userFacingTrigger)) {
|
|
130
|
+
validateDateComponentsInTrigger(userFacingTrigger, WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS);
|
|
131
|
+
return {
|
|
132
|
+
type: 'weekly',
|
|
133
|
+
channelId: userFacingTrigger.channelId,
|
|
134
|
+
weekday: userFacingTrigger.weekday,
|
|
135
|
+
hour: userFacingTrigger.hour,
|
|
136
|
+
minute: userFacingTrigger.minute,
|
|
137
|
+
};
|
|
138
|
+
} else if (isYearlyTriggerInput(userFacingTrigger)) {
|
|
139
|
+
validateDateComponentsInTrigger(userFacingTrigger, YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS);
|
|
140
|
+
return {
|
|
141
|
+
type: 'yearly',
|
|
142
|
+
channelId: userFacingTrigger.channelId,
|
|
143
|
+
day: userFacingTrigger.day,
|
|
144
|
+
month: userFacingTrigger.month,
|
|
145
|
+
hour: userFacingTrigger.hour,
|
|
146
|
+
minute: userFacingTrigger.minute,
|
|
147
|
+
};
|
|
148
|
+
} else if (isSecondsPropertyMisusedInCalendarTriggerInput(userFacingTrigger)) {
|
|
149
|
+
throw new TypeError(
|
|
150
|
+
'Could not have inferred the notification trigger type: if you want to use a time interval trigger, pass in only `seconds` with or without `repeats` property; if you want to use calendar-based trigger, pass in `second`.'
|
|
151
|
+
);
|
|
152
|
+
} else if ('seconds' in userFacingTrigger) {
|
|
153
|
+
return {
|
|
154
|
+
type: 'timeInterval',
|
|
155
|
+
channelId: userFacingTrigger.channelId,
|
|
156
|
+
seconds: userFacingTrigger.seconds,
|
|
157
|
+
repeats: userFacingTrigger.repeats ?? false,
|
|
158
|
+
};
|
|
159
|
+
} else if (isCalendarTrigger(userFacingTrigger)) {
|
|
160
|
+
const { repeats, ...calendarTrigger } = userFacingTrigger;
|
|
161
|
+
return { type: 'calendar', value: calendarTrigger, repeats };
|
|
162
|
+
} else {
|
|
163
|
+
return Platform.select({
|
|
164
|
+
default: null, // There's no notion of channels on platforms other than Android.
|
|
165
|
+
android: { type: 'channel', channelId: userFacingTrigger.channelId },
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function isCalendarTrigger(
|
|
171
|
+
trigger: CalendarTriggerInput | ChannelAwareTriggerInput
|
|
172
|
+
): trigger is CalendarTriggerInput {
|
|
173
|
+
const { channelId, ...triggerWithoutChannelId } = trigger;
|
|
174
|
+
return Object.keys(triggerWithoutChannelId).length > 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function isDateTrigger(
|
|
178
|
+
trigger:
|
|
179
|
+
| DateTriggerInput
|
|
180
|
+
| WeeklyTriggerInput
|
|
181
|
+
| DailyTriggerInput
|
|
182
|
+
| CalendarTriggerInput
|
|
183
|
+
| TimeIntervalTriggerInput
|
|
184
|
+
): trigger is DateTriggerInput {
|
|
185
|
+
return (
|
|
186
|
+
trigger instanceof Date ||
|
|
187
|
+
typeof trigger === 'number' ||
|
|
188
|
+
(typeof trigger === 'object' && 'date' in trigger)
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function parseDateTrigger(trigger: DateTriggerInput): NativeNotificationTriggerInput {
|
|
193
|
+
if (trigger instanceof Date || typeof trigger === 'number') {
|
|
194
|
+
return { type: 'date', timestamp: toTimestamp(trigger) };
|
|
195
|
+
}
|
|
196
|
+
return { type: 'date', timestamp: toTimestamp(trigger.date), channelId: trigger.channelId };
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function toTimestamp(date: number | Date) {
|
|
200
|
+
if (date instanceof Date) {
|
|
201
|
+
return date.getTime();
|
|
202
|
+
}
|
|
203
|
+
return date;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
function isDailyTriggerInput(
|
|
207
|
+
trigger: SchedulableNotificationTriggerInput
|
|
208
|
+
): trigger is DailyTriggerInput {
|
|
209
|
+
if (typeof trigger !== 'object') return false;
|
|
210
|
+
const { channelId, ...triggerWithoutChannelId } = trigger as DailyTriggerInput;
|
|
211
|
+
return (
|
|
212
|
+
Object.keys(triggerWithoutChannelId).length ===
|
|
213
|
+
DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS.length + 1 &&
|
|
214
|
+
DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS.every(
|
|
215
|
+
(component) => component in triggerWithoutChannelId
|
|
216
|
+
) &&
|
|
217
|
+
'repeats' in triggerWithoutChannelId &&
|
|
218
|
+
triggerWithoutChannelId.repeats === true
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function isWeeklyTriggerInput(
|
|
223
|
+
trigger: SchedulableNotificationTriggerInput
|
|
224
|
+
): trigger is WeeklyTriggerInput {
|
|
225
|
+
if (typeof trigger !== 'object') return false;
|
|
226
|
+
const { channelId, ...triggerWithoutChannelId } = trigger as WeeklyTriggerInput;
|
|
227
|
+
return (
|
|
228
|
+
Object.keys(triggerWithoutChannelId).length ===
|
|
229
|
+
WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS.length + 1 &&
|
|
230
|
+
WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS.every(
|
|
231
|
+
(component) => component in triggerWithoutChannelId
|
|
232
|
+
) &&
|
|
233
|
+
'repeats' in triggerWithoutChannelId &&
|
|
234
|
+
triggerWithoutChannelId.repeats === true
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function isYearlyTriggerInput(
|
|
239
|
+
trigger: SchedulableNotificationTriggerInput
|
|
240
|
+
): trigger is YearlyTriggerInput {
|
|
241
|
+
if (typeof trigger !== 'object') return false;
|
|
242
|
+
const { channelId, ...triggerWithoutChannelId } = trigger as YearlyTriggerInput;
|
|
243
|
+
return (
|
|
244
|
+
Object.keys(triggerWithoutChannelId).length ===
|
|
245
|
+
YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS.length + 1 &&
|
|
246
|
+
YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS.every(
|
|
247
|
+
(component) => component in triggerWithoutChannelId
|
|
248
|
+
) &&
|
|
249
|
+
'repeats' in triggerWithoutChannelId &&
|
|
250
|
+
triggerWithoutChannelId.repeats === true
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function isSecondsPropertyMisusedInCalendarTriggerInput(
|
|
255
|
+
trigger: TimeIntervalTriggerInput | CalendarTriggerInput
|
|
256
|
+
) {
|
|
257
|
+
const { channelId, ...triggerWithoutChannelId } = trigger;
|
|
258
|
+
return (
|
|
259
|
+
// eg. { seconds: ..., repeats: ..., hour: ... }
|
|
260
|
+
('seconds' in triggerWithoutChannelId &&
|
|
261
|
+
'repeats' in triggerWithoutChannelId &&
|
|
262
|
+
Object.keys(triggerWithoutChannelId).length > 2) ||
|
|
263
|
+
// eg. { seconds: ..., hour: ... }
|
|
264
|
+
('seconds' in triggerWithoutChannelId &&
|
|
265
|
+
!('repeats' in triggerWithoutChannelId) &&
|
|
266
|
+
Object.keys(triggerWithoutChannelId).length > 1)
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function validateDateComponentsInTrigger(
|
|
271
|
+
trigger: NonNullable<NotificationTriggerInput>,
|
|
272
|
+
components: readonly ValidTriggerDateComponents[]
|
|
273
|
+
) {
|
|
274
|
+
const anyTriggerType = trigger as any;
|
|
275
|
+
components.forEach((component) => {
|
|
276
|
+
if (!(component in anyTriggerType)) {
|
|
277
|
+
throw new TypeError(`The ${component} parameter needs to be present`);
|
|
278
|
+
}
|
|
279
|
+
if (typeof anyTriggerType[component] !== 'number') {
|
|
280
|
+
throw new TypeError(`The ${component} parameter should be a number`);
|
|
281
|
+
}
|
|
282
|
+
switch (component) {
|
|
283
|
+
case 'month': {
|
|
284
|
+
const { month } = anyTriggerType;
|
|
285
|
+
if (month < 0 || month > 11) {
|
|
286
|
+
throw new RangeError(`The month parameter needs to be between 0 and 11. Found: ${month}`);
|
|
287
|
+
}
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
case 'day': {
|
|
291
|
+
const { day, month } = anyTriggerType;
|
|
292
|
+
const daysInGivenMonth = daysInMonth(month);
|
|
293
|
+
if (day < 1 || day > daysInGivenMonth) {
|
|
294
|
+
throw new RangeError(
|
|
295
|
+
`The day parameter for month ${month} must be between 1 and ${daysInGivenMonth}. Found: ${day}`
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
case 'weekday': {
|
|
301
|
+
const { weekday } = anyTriggerType;
|
|
302
|
+
if (weekday < 1 || weekday > 7) {
|
|
303
|
+
throw new RangeError(
|
|
304
|
+
`The weekday parameter needs to be between 1 and 7. Found: ${weekday}`
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
case 'hour': {
|
|
310
|
+
const { hour } = anyTriggerType;
|
|
311
|
+
if (hour < 0 || hour > 23) {
|
|
312
|
+
throw new RangeError(`The hour parameter needs to be between 0 and 23. Found: ${hour}`);
|
|
313
|
+
}
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
case 'minute': {
|
|
317
|
+
const { minute } = anyTriggerType;
|
|
318
|
+
if (minute < 0 || minute > 59) {
|
|
319
|
+
throw new RangeError(
|
|
320
|
+
`The minute parameter needs to be between 0 and 59. Found: ${minute}`
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Determines the number of days in the given month (or January if omitted).
|
|
331
|
+
* If year is specified, it will include leap year logic, else it will always assume a leap year
|
|
332
|
+
*/
|
|
333
|
+
function daysInMonth(month: number = 0, year?: number) {
|
|
334
|
+
return new Date(year ?? 2000, month + 1, 0).getDate();
|
|
335
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { UnavailabilityError, Platform } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import BadgeModule from './BadgeModule';
|
|
4
|
+
import { WebSetBadgeCountOptions } from './BadgeModule.types';
|
|
5
|
+
|
|
6
|
+
export interface SetBadgeCountOptions {
|
|
7
|
+
/**
|
|
8
|
+
* A configuration object described [in the `badgin` documentation](https://github.com/jaulz/badgin#options).
|
|
9
|
+
*/
|
|
10
|
+
web?: WebSetBadgeCountOptions;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Sets the badge of the app's icon to the specified number. Setting it to `0` clears the badge. On iOS, this method requires that you have requested
|
|
15
|
+
* the user's permission for `allowBadge` via [`requestPermissionsAsync`](#notificationsrequestpermissionsasyncpermissions),
|
|
16
|
+
* otherwise it will automatically return `false`.
|
|
17
|
+
* > **Note:** Not all Android launchers support application badges. If the launcher does not support icon badges, the method will resolve to `false`.
|
|
18
|
+
* @param badgeCount The count which should appear on the badge. A value of `0` will clear the badge.
|
|
19
|
+
* @param options An object of options configuring behavior applied in Web environment.
|
|
20
|
+
* @return It returns a Promise resolving to a boolean representing whether the setting of the badge succeeded.
|
|
21
|
+
* @header badge
|
|
22
|
+
*/
|
|
23
|
+
export default async function setBadgeCountAsync(
|
|
24
|
+
badgeCount: number,
|
|
25
|
+
options?: SetBadgeCountOptions
|
|
26
|
+
): Promise<boolean> {
|
|
27
|
+
if (!BadgeModule.setBadgeCountAsync) {
|
|
28
|
+
throw new UnavailabilityError('ExpoNotifications', 'setBadgeCountAsync');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return await BadgeModule.setBadgeCountAsync(badgeCount, options?.[Platform.OS]);
|
|
32
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 {
|
|
6
|
+
NotificationCategory,
|
|
7
|
+
NotificationAction,
|
|
8
|
+
NotificationCategoryOptions,
|
|
9
|
+
} from './Notifications.types';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Sets the new notification category.
|
|
13
|
+
* @param identifier A string to associate as the ID of this category. You will pass this string in as the `categoryIdentifier`
|
|
14
|
+
* in your [`NotificationContent`](#notificationcontent) to associate a notification with this category.
|
|
15
|
+
* > Don't use the characters `:` or `-` in your category identifier. If you do, categories might not work as expected.
|
|
16
|
+
* @param actions An array of [`NotificationAction`s](#notificationaction), which describe the actions associated with this category.
|
|
17
|
+
* @param options An optional object of additional configuration options for your category.
|
|
18
|
+
* @return A Promise which resolves to the category you just have created.
|
|
19
|
+
* @platform android
|
|
20
|
+
* @platform ios
|
|
21
|
+
* @header categories
|
|
22
|
+
*/
|
|
23
|
+
export default async function setNotificationCategoryAsync(
|
|
24
|
+
identifier: string,
|
|
25
|
+
actions: NotificationAction[],
|
|
26
|
+
options?: NotificationCategoryOptions
|
|
27
|
+
): Promise<NotificationCategory> {
|
|
28
|
+
if (!NotificationCategoriesModule.setNotificationCategoryAsync) {
|
|
29
|
+
throw new UnavailabilityError('Notifications', 'setNotificationCategoryAsync');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return await NotificationCategoriesModule.setNotificationCategoryAsync(
|
|
33
|
+
identifier,
|
|
34
|
+
actions,
|
|
35
|
+
options
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationChannelManager from './NotificationChannelManager';
|
|
4
|
+
import { NotificationChannelInput, NotificationChannel } from './NotificationChannelManager.types';
|
|
5
|
+
|
|
6
|
+
export default async function setNotificationChannelAsync(
|
|
7
|
+
channelId: string,
|
|
8
|
+
channel: NotificationChannelInput
|
|
9
|
+
): Promise<NotificationChannel | null> {
|
|
10
|
+
if (!NotificationChannelManager.setNotificationChannelAsync) {
|
|
11
|
+
throw new UnavailabilityError('Notifications', 'setNotificationChannelAsync');
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return await NotificationChannelManager.setNotificationChannelAsync(channelId, channel);
|
|
15
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NotificationChannel, NotificationChannelInput } from './NotificationChannelManager.types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Assigns the channel configuration to a channel of a specified name (creating it if need be).
|
|
5
|
+
* This method lets you assign given notification channel to a notification channel group.
|
|
6
|
+
*
|
|
7
|
+
* > **Note:** For some settings to be applied on all Android versions, it may be necessary to duplicate the configuration across both
|
|
8
|
+
* > a single notification and its respective notification channel.
|
|
9
|
+
*
|
|
10
|
+
* For example, for a notification to play a custom sound on Android versions **below** 8.0,
|
|
11
|
+
* the custom notification sound has to be set on the notification (through the [`NotificationContentInput`](#notificationcontentinput)),
|
|
12
|
+
* and for the custom sound to play on Android versions **above** 8.0, the relevant notification channel must have the custom sound configured
|
|
13
|
+
* (through the [`NotificationChannelInput`](#notificationchannelinput)). For more information,
|
|
14
|
+
* see [Set custom notification sounds on Android](#set-custom-notification-sounds).
|
|
15
|
+
* @param channelId The channel identifier.
|
|
16
|
+
* @param channel Object representing the channel's configuration.
|
|
17
|
+
* @return A Promise which resolving to the object (of type [`NotificationChannel`](#notificationchannel)) describing the modified channel
|
|
18
|
+
* or to `null` if the platform does not support notification channels.
|
|
19
|
+
* @platform android
|
|
20
|
+
* @header channels
|
|
21
|
+
*/
|
|
22
|
+
export default async function setNotificationChannelAsync(
|
|
23
|
+
channelId: string,
|
|
24
|
+
channel: NotificationChannelInput
|
|
25
|
+
): Promise<NotificationChannel | null> {
|
|
26
|
+
console.debug('Notification channels feature is only supported on Android.');
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import NotificationChannelGroupManager from './NotificationChannelGroupManager';
|
|
4
|
+
import {
|
|
5
|
+
NotificationChannelGroup,
|
|
6
|
+
NotificationChannelGroupInput,
|
|
7
|
+
} from './NotificationChannelGroupManager.types';
|
|
8
|
+
|
|
9
|
+
export default async function setNotificationChannelGroupAsync(
|
|
10
|
+
groupId: string,
|
|
11
|
+
group: NotificationChannelGroupInput
|
|
12
|
+
): Promise<NotificationChannelGroup | null> {
|
|
13
|
+
if (!NotificationChannelGroupManager.setNotificationChannelGroupAsync) {
|
|
14
|
+
throw new UnavailabilityError('Notifications', 'setNotificationChannelGroupAsync');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return await NotificationChannelGroupManager.setNotificationChannelGroupAsync(groupId, group);
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NotificationChannelGroup,
|
|
3
|
+
NotificationChannelGroupInput,
|
|
4
|
+
} from './NotificationChannelGroupManager.types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Assigns the channel group configuration to a channel group of a specified name (creating it if need be).
|
|
8
|
+
* @param groupId The channel group's identifier.
|
|
9
|
+
* @param group Object representing the channel group configuration.
|
|
10
|
+
* @return A `Promise` resolving to the object (of type [`NotificationChannelGroup`](#notificationchannelgroup))
|
|
11
|
+
* describing the modified channel group or to `null` if the platform does not support notification channels.
|
|
12
|
+
* @platform android
|
|
13
|
+
* @header channels
|
|
14
|
+
*/
|
|
15
|
+
export default async function setNotificationChannelGroupAsync(
|
|
16
|
+
groupId: string,
|
|
17
|
+
group: NotificationChannelGroupInput
|
|
18
|
+
): Promise<NotificationChannelGroup | null> {
|
|
19
|
+
console.debug('Notification channels feature is only supported on Android.');
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import PushTokenManager from './PushTokenManager';
|
|
4
|
+
|
|
5
|
+
// @docsMissing
|
|
6
|
+
export default async function unregisterForNotificationsAsync(): Promise<void> {
|
|
7
|
+
if (!PushTokenManager.unregisterForNotificationsAsync) {
|
|
8
|
+
throw new UnavailabilityError('ExpoNotifications', 'unregisterForNotificationsAsync');
|
|
9
|
+
}
|
|
10
|
+
return PushTokenManager.unregisterForNotificationsAsync();
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UnavailabilityError } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
// @amznmod_react - Changed .native import to one without postfix
|
|
4
|
+
import BackgroundNotificationTasksModule from './BackgroundNotificationTasksModule';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Used to unregister tasks registered with `registerTaskAsync` method.
|
|
8
|
+
* @param taskName The string you passed to `registerTaskAsync` as the `taskName` parameter.
|
|
9
|
+
* @header inBackground
|
|
10
|
+
*/
|
|
11
|
+
export default async function unregisterTaskAsync(taskName: string): Promise<null> {
|
|
12
|
+
if (!BackgroundNotificationTasksModule.unregisterTaskAsync) {
|
|
13
|
+
throw new UnavailabilityError('Notifications', 'unregisterTaskAsync');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return await BackgroundNotificationTasksModule.unregisterTaskAsync(taskName);
|
|
17
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useEffect, useLayoutEffect, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { NotificationResponse } from './Notifications.types';
|
|
4
|
+
import { addNotificationResponseReceivedListener } from './NotificationsEmitter';
|
|
5
|
+
import NotificationsEmitterModule from './NotificationsEmitterModule';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A React hook always returns the notification response that was received most recently
|
|
9
|
+
* (a notification response designates an interaction with a notification, such as tapping on it).
|
|
10
|
+
*
|
|
11
|
+
* > If you don't want to use a hook, you can use `Notifications.getLastNotificationResponseAsync()` instead.
|
|
12
|
+
*
|
|
13
|
+
* @return The hook may return one of these three types/values:
|
|
14
|
+
* - `undefined` - until we're sure of what to return,
|
|
15
|
+
* - `null` - if no notification response has been received yet,
|
|
16
|
+
* - a [`NotificationResponse`](#notificationresponse) object - if a notification response was received.
|
|
17
|
+
*
|
|
18
|
+
* @example Responding to a notification tap by opening a URL that could be put into the notification's `data`
|
|
19
|
+
* (opening the URL is your responsibility and is not a part of the `expo-notifications` API):
|
|
20
|
+
* ```jsx
|
|
21
|
+
* import * as Notifications from '@amazon-devices/expo-notifications';
|
|
22
|
+
* import { Linking } from 'react-native';
|
|
23
|
+
*
|
|
24
|
+
* export default function App() {
|
|
25
|
+
* const lastNotificationResponse = Notifications.useLastNotificationResponse();
|
|
26
|
+
* React.useEffect(() => {
|
|
27
|
+
* if (
|
|
28
|
+
* lastNotificationResponse &&
|
|
29
|
+
* lastNotificationResponse.notification.request.content.data.url &&
|
|
30
|
+
* lastNotificationResponse.actionIdentifier === Notifications.DEFAULT_ACTION_IDENTIFIER
|
|
31
|
+
* ) {
|
|
32
|
+
* Linking.openURL(lastNotificationResponse.notification.request.content.data.url);
|
|
33
|
+
* }
|
|
34
|
+
* }, [lastNotificationResponse]);
|
|
35
|
+
* return (
|
|
36
|
+
* // Your app content
|
|
37
|
+
* );
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
* @header listen
|
|
41
|
+
*/
|
|
42
|
+
export default function useLastNotificationResponse() {
|
|
43
|
+
const [lastNotificationResponse, setLastNotificationResponse] = useState<
|
|
44
|
+
NotificationResponse | null | undefined
|
|
45
|
+
>(undefined);
|
|
46
|
+
|
|
47
|
+
// useLayoutEffect ensures the listener is registered as soon as possible
|
|
48
|
+
useLayoutEffect(() => {
|
|
49
|
+
const subscription = addNotificationResponseReceivedListener((response) => {
|
|
50
|
+
setLastNotificationResponse(response);
|
|
51
|
+
});
|
|
52
|
+
return () => {
|
|
53
|
+
subscription.remove();
|
|
54
|
+
};
|
|
55
|
+
}, []);
|
|
56
|
+
|
|
57
|
+
// On each mount of this hook we fetch last notification response
|
|
58
|
+
// from the native module which is an "always active listener"
|
|
59
|
+
// and always returns the most recent response.
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
NotificationsEmitterModule.getLastNotificationResponseAsync?.().then((response) => {
|
|
62
|
+
// We only update the state with the resolved value if it's empty,
|
|
63
|
+
// because if it's not empty it must have been populated by the `useLayoutEffect`
|
|
64
|
+
// listener which returns "live" values.
|
|
65
|
+
setLastNotificationResponse((currentResponse) => currentResponse ?? response);
|
|
66
|
+
});
|
|
67
|
+
}, []);
|
|
68
|
+
|
|
69
|
+
return lastNotificationResponse;
|
|
70
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* PROPRIETARY/CONFIDENTIAL
|
|
5
|
+
*
|
|
6
|
+
* Use is subject to license terms.
|
|
7
|
+
*/
|
|
8
|
+
import { Uuid } from '../kepler';
|
|
9
|
+
import * as NotificationManagerTypes from '../kepler/types/NotificationManagerTypes';
|
|
10
|
+
|
|
11
|
+
export function stringifyNotificationUuid(uuid: NotificationManagerTypes.Uuid): string {
|
|
12
|
+
let idx = 0;
|
|
13
|
+
const base = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';
|
|
14
|
+
|
|
15
|
+
const numArray = uuid.bytes.map((b) => (b < 0 ? b + 256 : b));
|
|
16
|
+
|
|
17
|
+
return base.replace(/XX/g, () => numArray[idx++].toString(16).padStart(2, '0'));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function parseNotificationUuid(uuidString: string): Uuid {
|
|
21
|
+
const base = uuidString.replace(/-/g, '').match(/.{1,2}/g);
|
|
22
|
+
if (base == null || base.length !== 16) {
|
|
23
|
+
throw new Error('Invalid UUID');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const bytes = base.map((n) => parseInt(n, 16)).map((n) => (n > 127 ? n - 256 : n));
|
|
27
|
+
|
|
28
|
+
return { bytes };
|
|
29
|
+
}
|