@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,106 @@
|
|
|
1
|
+
package expo.modules.notifications.service.delegates
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.content.SharedPreferences
|
|
5
|
+
import expo.modules.notifications.notifications.model.NotificationCategory
|
|
6
|
+
import java.io.IOException
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A fairly straightforward [SharedPreferences] wrapper to be used by [NotificationSchedulingHelper].
|
|
10
|
+
* Saves and reads notification category information (identifiers, actions, and options) to and from persistent storage.
|
|
11
|
+
*
|
|
12
|
+
* A notification category with identifier = 123abc will be persisted under key:
|
|
13
|
+
* [SharedPreferencesNotificationCategoriesStore.NOTIFICATION_CATEGORY_KEY_PREFIX]123abc
|
|
14
|
+
*/
|
|
15
|
+
class SharedPreferencesNotificationCategoriesStore(context: Context) {
|
|
16
|
+
companion object {
|
|
17
|
+
private const val SHARED_PREFERENCES_NAME = "expo.modules.notifications.SharedPreferencesNotificationCategoriesStore"
|
|
18
|
+
private const val NOTIFICATION_CATEGORY_KEY_PREFIX = "notification_category-"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private val sharedPreferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE)
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Fetches notification category info for given identifier.
|
|
25
|
+
*
|
|
26
|
+
* @param identifier Identifier of the category.
|
|
27
|
+
* @return Category information: actions and options.
|
|
28
|
+
* @throws JSONException Thrown if notification category could not be interpreted as a JSON object.
|
|
29
|
+
* @throws IOException Thrown if there is an error when fetching the category from storage.
|
|
30
|
+
* @throws ClassNotFoundException Thrown if there is an error when interpreting the category fetched from storage.
|
|
31
|
+
*/
|
|
32
|
+
@Throws(IOException::class, ClassNotFoundException::class)
|
|
33
|
+
fun getNotificationCategory(identifier: String) =
|
|
34
|
+
sharedPreferences.getString(
|
|
35
|
+
preferencesNotificationCategoryKey(identifier),
|
|
36
|
+
null
|
|
37
|
+
)?.asBase64EncodedObject<NotificationCategory>()
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Fetches all categories, ignoring invalid ones.
|
|
41
|
+
*
|
|
42
|
+
* Goes through all the [SharedPreferences] entries, interpreting only the ones conforming
|
|
43
|
+
* to the expected format.
|
|
44
|
+
*
|
|
45
|
+
* @return Map with identifiers as keys and category info as values
|
|
46
|
+
*/
|
|
47
|
+
val allNotificationCategories: Collection<NotificationCategory>
|
|
48
|
+
get() =
|
|
49
|
+
sharedPreferences
|
|
50
|
+
.all
|
|
51
|
+
.filter { it.key.startsWith(NOTIFICATION_CATEGORY_KEY_PREFIX) }
|
|
52
|
+
.mapNotNull { (_, value) ->
|
|
53
|
+
return@mapNotNull try {
|
|
54
|
+
(value as String?)?.asBase64EncodedObject<NotificationCategory>()
|
|
55
|
+
} catch (e: ClassNotFoundException) {
|
|
56
|
+
// do nothing
|
|
57
|
+
null
|
|
58
|
+
} catch (e: IOException) {
|
|
59
|
+
// do nothing
|
|
60
|
+
null
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Saves given category in persistent storage.
|
|
66
|
+
*
|
|
67
|
+
* @param notificationCategory Notification category
|
|
68
|
+
* @throws IOException Thrown if there is an error while serializing the category
|
|
69
|
+
* @return The category that was just created, or null if it couldn't be created.
|
|
70
|
+
*/
|
|
71
|
+
@Throws(IOException::class)
|
|
72
|
+
fun saveNotificationCategory(notificationCategory: NotificationCategory) =
|
|
73
|
+
sharedPreferences
|
|
74
|
+
.edit()
|
|
75
|
+
.putString(
|
|
76
|
+
preferencesNotificationCategoryKey(notificationCategory.identifier),
|
|
77
|
+
notificationCategory.encodedInBase64()
|
|
78
|
+
)
|
|
79
|
+
.commit()
|
|
80
|
+
.let { if (it) notificationCategory else null }
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Removes notification category for the given identifier.
|
|
84
|
+
*
|
|
85
|
+
* @param identifier Category identifier
|
|
86
|
+
* @return Return true if category was deleted, false if not.
|
|
87
|
+
*/
|
|
88
|
+
fun removeNotificationCategory(identifier: String): Boolean {
|
|
89
|
+
sharedPreferences.getString(
|
|
90
|
+
preferencesNotificationCategoryKey(identifier),
|
|
91
|
+
null
|
|
92
|
+
).let { if (it == null) return false }
|
|
93
|
+
|
|
94
|
+
return sharedPreferences
|
|
95
|
+
.edit()
|
|
96
|
+
.remove(preferencesNotificationCategoryKey(identifier))
|
|
97
|
+
.commit()
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @param identifier Category identifier
|
|
102
|
+
* @return Key under which the notification category will be persisted in storage.
|
|
103
|
+
*/
|
|
104
|
+
private fun preferencesNotificationCategoryKey(identifier: String) =
|
|
105
|
+
NOTIFICATION_CATEGORY_KEY_PREFIX + identifier
|
|
106
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
package expo.modules.notifications.service.delegates
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.content.SharedPreferences
|
|
5
|
+
import expo.modules.notifications.notifications.model.NotificationRequest
|
|
6
|
+
import java.io.IOException
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A fairly straightforward [SharedPreferences] wrapper to be used by [NotificationSchedulingHelper].
|
|
10
|
+
* Saves and reads notifications (identifiers, requests and triggers) to and from the persistent storage.
|
|
11
|
+
*
|
|
12
|
+
* A notification request of identifier = 123abc, it will be persisted under key:
|
|
13
|
+
* [SharedPreferencesNotificationsStore.NOTIFICATION_REQUEST_KEY_PREFIX]123abc
|
|
14
|
+
*/
|
|
15
|
+
class SharedPreferencesNotificationsStore(context: Context) {
|
|
16
|
+
companion object {
|
|
17
|
+
private const val SHARED_PREFERENCES_NAME = "expo.modules.notifications.SharedPreferencesNotificationsStore"
|
|
18
|
+
private const val NOTIFICATION_REQUEST_KEY_PREFIX = "notification_request-"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private val sharedPreferences: SharedPreferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE)
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Fetches scheduled notification info for given identifier.
|
|
25
|
+
*
|
|
26
|
+
* @param identifier Identifier of the notification.
|
|
27
|
+
* @return Notification information: request and trigger.
|
|
28
|
+
* @throws JSONException Thrown if notification request could not have been interpreted as a JSON object.
|
|
29
|
+
* @throws IOException Thrown if there is an error when fetching trigger from the storage.
|
|
30
|
+
* @throws ClassNotFoundException Thrown if there is an error when interpreting trigger fetched from the storage.
|
|
31
|
+
*/
|
|
32
|
+
@Throws(IOException::class, ClassNotFoundException::class)
|
|
33
|
+
fun getNotificationRequest(identifier: String) =
|
|
34
|
+
sharedPreferences.getString(
|
|
35
|
+
preferencesNotificationRequestKey(identifier),
|
|
36
|
+
null
|
|
37
|
+
)?.asBase64EncodedObject<NotificationRequest>()
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Fetches all scheduled notifications, ignoring invalid ones.
|
|
41
|
+
*
|
|
42
|
+
* Goes through all the [SharedPreferences] entries, interpreting only the ones conforming
|
|
43
|
+
* to the expected format.
|
|
44
|
+
*
|
|
45
|
+
* @return Map with identifiers as keys and notification info as values
|
|
46
|
+
*/
|
|
47
|
+
val allNotificationRequests: Collection<NotificationRequest>
|
|
48
|
+
get() =
|
|
49
|
+
sharedPreferences
|
|
50
|
+
.all
|
|
51
|
+
.filter { it.key.startsWith(NOTIFICATION_REQUEST_KEY_PREFIX) }
|
|
52
|
+
.mapNotNull { (_, value) ->
|
|
53
|
+
return@mapNotNull try {
|
|
54
|
+
(value as String?)?.asBase64EncodedObject<NotificationRequest>()
|
|
55
|
+
} catch (e: ClassNotFoundException) {
|
|
56
|
+
// do nothing
|
|
57
|
+
null
|
|
58
|
+
} catch (e: IOException) {
|
|
59
|
+
// do nothing
|
|
60
|
+
null
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Saves given notification in the persistent storage.
|
|
66
|
+
*
|
|
67
|
+
* @param notificationRequest Notification request
|
|
68
|
+
* @throws IOException Thrown if there is an error while serializing trigger
|
|
69
|
+
*/
|
|
70
|
+
@Throws(IOException::class)
|
|
71
|
+
fun saveNotificationRequest(notificationRequest: NotificationRequest) =
|
|
72
|
+
sharedPreferences.edit()
|
|
73
|
+
.putString(
|
|
74
|
+
preferencesNotificationRequestKey(notificationRequest.identifier),
|
|
75
|
+
notificationRequest.encodedInBase64()
|
|
76
|
+
)
|
|
77
|
+
.apply()
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Removes notification info for given identifier.
|
|
81
|
+
*
|
|
82
|
+
* @param identifier Notification identifier
|
|
83
|
+
*/
|
|
84
|
+
fun removeNotificationRequest(identifier: String) =
|
|
85
|
+
removeNotificationRequest(sharedPreferences.edit(), identifier).apply()
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Perform notification removal on provided [SharedPreferences.Editor] instance. Can be reused
|
|
89
|
+
* to batch deletion.
|
|
90
|
+
*
|
|
91
|
+
* @param editor Editor to apply changes onto
|
|
92
|
+
* @param identifier Notification identifier
|
|
93
|
+
* @return Returns a reference to the same Editor object, so you can
|
|
94
|
+
* chain put calls together.
|
|
95
|
+
*/
|
|
96
|
+
private fun removeNotificationRequest(editor: SharedPreferences.Editor, identifier: String) =
|
|
97
|
+
editor.remove(preferencesNotificationRequestKey(identifier))
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Removes all notification infos, returning removed IDs.
|
|
101
|
+
*/
|
|
102
|
+
fun removeAllNotificationRequests(): Collection<String> =
|
|
103
|
+
with(sharedPreferences.edit()) {
|
|
104
|
+
allNotificationRequests.map {
|
|
105
|
+
removeNotificationRequest(this, it.identifier)
|
|
106
|
+
it.identifier
|
|
107
|
+
}.let {
|
|
108
|
+
this.apply()
|
|
109
|
+
it
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @param identifier Notification identifier
|
|
115
|
+
* @return Key under which notification request will be persisted in the storage.
|
|
116
|
+
*/
|
|
117
|
+
private fun preferencesNotificationRequestKey(identifier: String) =
|
|
118
|
+
NOTIFICATION_REQUEST_KEY_PREFIX + identifier
|
|
119
|
+
}
|
package/android/src/main/java/expo/modules/notifications/service/interfaces/CategoriesDelegate.kt
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package expo.modules.notifications.service.interfaces
|
|
2
|
+
|
|
3
|
+
import expo.modules.notifications.notifications.model.NotificationCategory
|
|
4
|
+
import expo.modules.notifications.service.NotificationsService
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A delegate to [NotificationsService] responsible for handling events
|
|
8
|
+
* related to [NotificationCategory]s.
|
|
9
|
+
*/
|
|
10
|
+
interface CategoriesDelegate {
|
|
11
|
+
fun getCategories(): Collection<NotificationCategory>
|
|
12
|
+
fun setCategory(category: NotificationCategory): NotificationCategory?
|
|
13
|
+
fun deleteCategory(identifier: String): Boolean
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
package expo.modules.notifications.service.interfaces
|
|
2
|
+
|
|
3
|
+
import com.google.firebase.messaging.RemoteMessage
|
|
4
|
+
import expo.modules.notifications.service.NotificationsService
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A delegate to [NotificationsService] responsible for handling Firebase events.
|
|
8
|
+
*/
|
|
9
|
+
interface FirebaseMessagingDelegate {
|
|
10
|
+
/**
|
|
11
|
+
* Called on new token, dispatches it to [NotificationsService.sTokenListenersReferences].
|
|
12
|
+
*
|
|
13
|
+
* @param token New device push token.
|
|
14
|
+
*/
|
|
15
|
+
fun onNewToken(token: String)
|
|
16
|
+
|
|
17
|
+
fun onMessageReceived(remoteMessage: RemoteMessage)
|
|
18
|
+
|
|
19
|
+
fun onDeletedMessages()
|
|
20
|
+
}
|
package/android/src/main/java/expo/modules/notifications/service/interfaces/HandlingDelegate.kt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
package expo.modules.notifications.service.interfaces
|
|
2
|
+
|
|
3
|
+
import expo.modules.notifications.notifications.model.Notification
|
|
4
|
+
import expo.modules.notifications.notifications.model.NotificationResponse
|
|
5
|
+
|
|
6
|
+
interface HandlingDelegate {
|
|
7
|
+
fun handleNotification(notification: Notification)
|
|
8
|
+
fun handleNotificationResponse(notificationResponse: NotificationResponse)
|
|
9
|
+
fun handleNotificationsDropped()
|
|
10
|
+
}
|
package/android/src/main/java/expo/modules/notifications/service/interfaces/PresentationDelegate.kt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package expo.modules.notifications.service.interfaces
|
|
2
|
+
|
|
3
|
+
import expo.modules.notifications.notifications.model.Notification
|
|
4
|
+
import expo.modules.notifications.notifications.model.NotificationBehavior
|
|
5
|
+
|
|
6
|
+
interface PresentationDelegate {
|
|
7
|
+
fun presentNotification(notification: Notification, behavior: NotificationBehavior?)
|
|
8
|
+
fun getAllPresentedNotifications(): Collection<Notification>
|
|
9
|
+
fun dismissNotifications(identifiers: Collection<String>)
|
|
10
|
+
fun dismissAllNotifications()
|
|
11
|
+
}
|
package/android/src/main/java/expo/modules/notifications/service/interfaces/SchedulingDelegate.kt
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
package expo.modules.notifications.service.interfaces
|
|
2
|
+
|
|
3
|
+
import expo.modules.notifications.notifications.model.NotificationRequest
|
|
4
|
+
|
|
5
|
+
interface SchedulingDelegate {
|
|
6
|
+
fun setupScheduledNotifications()
|
|
7
|
+
fun getAllScheduledNotifications(): Collection<NotificationRequest>
|
|
8
|
+
fun getScheduledNotification(identifier: String): NotificationRequest?
|
|
9
|
+
fun scheduleNotification(request: NotificationRequest)
|
|
10
|
+
fun triggerNotification(identifier: String)
|
|
11
|
+
fun removeScheduledNotifications(identifiers: Collection<String>)
|
|
12
|
+
fun removeAllScheduledNotifications()
|
|
13
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
package expo.modules.notifications.tokens;
|
|
2
|
+
|
|
3
|
+
import expo.modules.core.interfaces.SingletonModule;
|
|
4
|
+
|
|
5
|
+
import java.lang.ref.WeakReference;
|
|
6
|
+
import java.util.WeakHashMap;
|
|
7
|
+
|
|
8
|
+
import expo.modules.notifications.service.NotificationsService;
|
|
9
|
+
import expo.modules.notifications.service.delegates.FirebaseMessagingDelegate;
|
|
10
|
+
import expo.modules.notifications.tokens.interfaces.FirebaseTokenListener;
|
|
11
|
+
import expo.modules.notifications.tokens.interfaces.PushTokenListener;
|
|
12
|
+
|
|
13
|
+
public class PushTokenManager implements SingletonModule, FirebaseTokenListener, expo.modules.notifications.tokens.interfaces.PushTokenManager {
|
|
14
|
+
private static final String SINGLETON_NAME = "PushTokenManager";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* We store this value to be able to inform new listeners of last known token.
|
|
18
|
+
*/
|
|
19
|
+
private String mLastToken;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A weak map of listeners -> reference. Used to check quickly whether given listener
|
|
23
|
+
* is already registered and to iterate over on new token.
|
|
24
|
+
*/
|
|
25
|
+
private WeakHashMap<PushTokenListener, WeakReference<PushTokenListener>> mListenerReferenceMap;
|
|
26
|
+
|
|
27
|
+
public PushTokenManager() {
|
|
28
|
+
mListenerReferenceMap = new WeakHashMap<>();
|
|
29
|
+
|
|
30
|
+
// Registers this singleton instance in static FirebaseListenerService listeners collection.
|
|
31
|
+
// Since it doesn't hold strong reference to the object this should be safe.
|
|
32
|
+
FirebaseMessagingDelegate.addTokenListener(this);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@Override
|
|
36
|
+
public String getName() {
|
|
37
|
+
return SINGLETON_NAME;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Registers a {@link PushTokenListener} by adding a {@link WeakReference} to
|
|
42
|
+
* the {@link PushTokenManager#mListenerReferenceMap} map.
|
|
43
|
+
*
|
|
44
|
+
* @param listener Listener to be notified of new device push tokens.
|
|
45
|
+
*/
|
|
46
|
+
@Override
|
|
47
|
+
public void addListener(PushTokenListener listener) {
|
|
48
|
+
// Check if the listener is already registered
|
|
49
|
+
if (!mListenerReferenceMap.containsKey(listener)) {
|
|
50
|
+
WeakReference<PushTokenListener> listenerReference = new WeakReference<>(listener);
|
|
51
|
+
mListenerReferenceMap.put(listener, listenerReference);
|
|
52
|
+
// Since it's a new listener and we know of a last valid value, let's let them know.
|
|
53
|
+
if (mLastToken != null) {
|
|
54
|
+
listener.onNewToken(mLastToken);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Unregisters a {@link PushTokenListener} by removing the {@link WeakReference} to the listener
|
|
61
|
+
* from the {@link PushTokenManager#mListenerReferenceMap} map.
|
|
62
|
+
*
|
|
63
|
+
* @param listener Listener previously registered with {@link PushTokenManager#addListener(PushTokenListener)}.
|
|
64
|
+
*/
|
|
65
|
+
@Override
|
|
66
|
+
public void removeListener(PushTokenListener listener) {
|
|
67
|
+
mListenerReferenceMap.remove(listener);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Used by {@link NotificationsService} to notify of new tokens.
|
|
72
|
+
* Calls {@link PushTokenListener#onNewToken(String)} on all values
|
|
73
|
+
* of {@link PushTokenManager#mListenerReferenceMap}.
|
|
74
|
+
*
|
|
75
|
+
* @param token New device push token.
|
|
76
|
+
*/
|
|
77
|
+
@Override
|
|
78
|
+
public void onNewToken(String token) {
|
|
79
|
+
for (WeakReference<PushTokenListener> listenerReference : mListenerReferenceMap.values()) {
|
|
80
|
+
PushTokenListener listener = listenerReference.get();
|
|
81
|
+
if (listener != null) {
|
|
82
|
+
listener.onNewToken(token);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
mLastToken = token;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
package expo.modules.notifications.tokens
|
|
2
|
+
|
|
3
|
+
import android.os.Bundle
|
|
4
|
+
import com.google.firebase.messaging.FirebaseMessaging
|
|
5
|
+
import expo.modules.core.interfaces.services.EventEmitter
|
|
6
|
+
import expo.modules.kotlin.Promise
|
|
7
|
+
import expo.modules.kotlin.modules.Module
|
|
8
|
+
import expo.modules.kotlin.modules.ModuleDefinition
|
|
9
|
+
import expo.modules.notifications.ModuleNotFoundException
|
|
10
|
+
import expo.modules.notifications.tokens.interfaces.PushTokenListener
|
|
11
|
+
import expo.modules.notifications.tokens.interfaces.PushTokenManager
|
|
12
|
+
|
|
13
|
+
private const val NEW_TOKEN_EVENT_NAME = "onDevicePushToken"
|
|
14
|
+
private const val NEW_TOKEN_EVENT_TOKEN_KEY = "devicePushToken"
|
|
15
|
+
private const val REGISTRATION_FAIL_CODE = "E_REGISTRATION_FAILED"
|
|
16
|
+
private const val UNREGISTER_FOR_NOTIFICATIONS_FAIL_CODE = "E_UNREGISTER_FOR_NOTIFICATIONS_FAILED"
|
|
17
|
+
|
|
18
|
+
class PushTokenModule : Module(), PushTokenListener {
|
|
19
|
+
private lateinit var tokenManager: PushTokenManager
|
|
20
|
+
private var eventEmitter: EventEmitter? = null
|
|
21
|
+
|
|
22
|
+
override fun definition() = ModuleDefinition {
|
|
23
|
+
Name("ExpoPushTokenManager")
|
|
24
|
+
|
|
25
|
+
OnCreate {
|
|
26
|
+
eventEmitter = appContext.legacyModule()
|
|
27
|
+
?: throw ModuleNotFoundException(EventEmitter::class)
|
|
28
|
+
|
|
29
|
+
// Register the module as a listener in PushTokenManager singleton module.
|
|
30
|
+
// Deregistration happens in onDestroy callback.
|
|
31
|
+
tokenManager = requireNotNull(
|
|
32
|
+
appContext.legacyModuleRegistry.getSingletonModule("PushTokenManager", PushTokenManager::class.java)
|
|
33
|
+
)
|
|
34
|
+
tokenManager.addListener(this@PushTokenModule)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
OnDestroy {
|
|
38
|
+
tokenManager.removeListener(this@PushTokenModule)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Fetches Firebase push token and resolves the promise.
|
|
43
|
+
*
|
|
44
|
+
* @param promise Promise to be resolved with the token.
|
|
45
|
+
*/
|
|
46
|
+
AsyncFunction("getDevicePushTokenAsync") { promise: Promise ->
|
|
47
|
+
FirebaseMessaging.getInstance().token
|
|
48
|
+
.addOnCompleteListener { task ->
|
|
49
|
+
if (!task.isSuccessful) {
|
|
50
|
+
val exception = task.exception
|
|
51
|
+
promise.reject(REGISTRATION_FAIL_CODE, "Fetching the token failed: ${exception?.message ?: "unknown"}", exception)
|
|
52
|
+
return@addOnCompleteListener
|
|
53
|
+
}
|
|
54
|
+
val token = task.result
|
|
55
|
+
if (token == null) {
|
|
56
|
+
promise.reject(REGISTRATION_FAIL_CODE, "Fetching the token failed. Invalid token.", null)
|
|
57
|
+
return@addOnCompleteListener
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
promise.resolve(token)
|
|
61
|
+
onNewToken(token)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
AsyncFunction("unregisterForNotificationsAsync") { promise: Promise ->
|
|
66
|
+
FirebaseMessaging.getInstance().deleteToken()
|
|
67
|
+
.addOnCompleteListener { task ->
|
|
68
|
+
if (!task.isSuccessful) {
|
|
69
|
+
val exception = task.exception
|
|
70
|
+
promise.reject(UNREGISTER_FOR_NOTIFICATIONS_FAIL_CODE, "Unregistering for notifications failed: ${exception?.message ?: "unknown"}", exception)
|
|
71
|
+
return@addOnCompleteListener
|
|
72
|
+
}
|
|
73
|
+
promise.resolve(null)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Callback called when [PushTokenManager] gets notified of a new token.
|
|
80
|
+
* Emits a [NEW_TOKEN_EVENT_NAME] event.
|
|
81
|
+
*
|
|
82
|
+
* @param token New push token.
|
|
83
|
+
*/
|
|
84
|
+
override fun onNewToken(token: String) {
|
|
85
|
+
eventEmitter?.let {
|
|
86
|
+
val eventBody = Bundle()
|
|
87
|
+
eventBody.putString(NEW_TOKEN_EVENT_TOKEN_KEY, token)
|
|
88
|
+
it.emit(NEW_TOKEN_EVENT_NAME, eventBody)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package expo.modules.notifications.tokens.interfaces;
|
|
2
|
+
|
|
3
|
+
import expo.modules.notifications.service.NotificationsService;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Interface used to register in {@link NotificationsService}
|
|
7
|
+
* and be notified of new device push tokens.
|
|
8
|
+
*/
|
|
9
|
+
public interface FirebaseTokenListener {
|
|
10
|
+
/**
|
|
11
|
+
* Callback called when new push token is generated.
|
|
12
|
+
*
|
|
13
|
+
* @param token New push token
|
|
14
|
+
*/
|
|
15
|
+
void onNewToken(String token);
|
|
16
|
+
}
|
package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenListener.java
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package expo.modules.notifications.tokens.interfaces;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interface used to register in {@link PushTokenManager}
|
|
5
|
+
* and be notified of new device push tokens.
|
|
6
|
+
*/
|
|
7
|
+
public interface PushTokenListener {
|
|
8
|
+
/**
|
|
9
|
+
* Callback called when new push token is generated.
|
|
10
|
+
*
|
|
11
|
+
* @param token New push token
|
|
12
|
+
*/
|
|
13
|
+
void onNewToken(String token);
|
|
14
|
+
}
|
package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenManager.java
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
package expo.modules.notifications.tokens.interfaces;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interface of a singleton module responsible
|
|
5
|
+
* for dispatching new push token information to listeners.
|
|
6
|
+
*/
|
|
7
|
+
public interface PushTokenManager {
|
|
8
|
+
/**
|
|
9
|
+
* Registers a {@link PushTokenListener}.
|
|
10
|
+
*
|
|
11
|
+
* @param listener Listener to be notified of new device push tokens.
|
|
12
|
+
*/
|
|
13
|
+
void addListener(PushTokenListener listener);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Unregisters a {@link PushTokenListener}.
|
|
17
|
+
*
|
|
18
|
+
* @param listener Listener previously registered
|
|
19
|
+
* with {@link PushTokenManager#addListener(PushTokenListener)}.
|
|
20
|
+
*/
|
|
21
|
+
void removeListener(PushTokenListener listener);
|
|
22
|
+
}
|
package/app.plugin.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./plugin/build/withNotifications');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.d.ts","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;wBAOzF,iCAAiC;AALtC,wBAKuC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.js","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;IACrB,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;IACzB,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;IACnC,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;CACD,CAAC","sourcesContent":["import { BackgroundNotificationTasksModule } from './BackgroundNotificationTasksModule.types';\n\nexport default {\n addListener: () => {},\n removeListeners: () => {},\n registerTaskAsync: async () => null,\n unregisterTaskAsync: async () => null,\n} as BackgroundNotificationTasksModule;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.kepler.d.ts","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.kepler.ts"],"names":[],"mappings":";AAOA,wBAAkB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.kepler.js","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.kepler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAe,EAAE,CAAC","sourcesContent":["/*\n * Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * PROPRIETARY/CONFIDENTIAL\n *\n * Use is subject to license terms.\n */\nexport default {};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.native.d.ts","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.native.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;;AAE9F,wBAEE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.native.js","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAIxD,eAAe,mBAAmB,CAChC,uCAAuC,CACxC,CAAC","sourcesContent":["import { requireNativeModule } from 'expo-modules-core';\n\nimport { BackgroundNotificationTasksModule } from './BackgroundNotificationTasksModule.types';\n\nexport default requireNativeModule<BackgroundNotificationTasksModule>(\n 'ExpoBackgroundNotificationTasksModule'\n);\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ProxyNativeModule } from 'expo-modules-core';
|
|
2
|
+
export interface BackgroundNotificationTasksModule extends ProxyNativeModule {
|
|
3
|
+
registerTaskAsync: (taskName: string) => Promise<null>;
|
|
4
|
+
unregisterTaskAsync: (taskName: string) => Promise<null>;
|
|
5
|
+
}
|
|
6
|
+
export declare enum BackgroundNotificationResult {
|
|
7
|
+
NoData = 1,
|
|
8
|
+
NewData = 2,
|
|
9
|
+
Failed = 3
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=BackgroundNotificationTasksModule.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.types.d.ts","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,iCAAkC,SAAQ,iBAAiB;IAC1E,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,oBAAY,4BAA4B;IACtC,MAAM,IAAI;IACV,OAAO,IAAI;IACX,MAAM,IAAI;CACX"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var BackgroundNotificationResult;
|
|
2
|
+
(function (BackgroundNotificationResult) {
|
|
3
|
+
BackgroundNotificationResult[BackgroundNotificationResult["NoData"] = 1] = "NoData";
|
|
4
|
+
BackgroundNotificationResult[BackgroundNotificationResult["NewData"] = 2] = "NewData";
|
|
5
|
+
BackgroundNotificationResult[BackgroundNotificationResult["Failed"] = 3] = "Failed";
|
|
6
|
+
})(BackgroundNotificationResult || (BackgroundNotificationResult = {}));
|
|
7
|
+
//# sourceMappingURL=BackgroundNotificationTasksModule.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.types.js","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,4BAIX;AAJD,WAAY,4BAA4B;IACtC,mFAAU,CAAA;IACV,qFAAW,CAAA;IACX,mFAAU,CAAA;AACZ,CAAC,EAJW,4BAA4B,KAA5B,4BAA4B,QAIvC","sourcesContent":["import { ProxyNativeModule } from 'expo-modules-core';\n\nexport interface BackgroundNotificationTasksModule extends ProxyNativeModule {\n registerTaskAsync: (taskName: string) => Promise<null>;\n unregisterTaskAsync: (taskName: string) => Promise<null>;\n}\n\nexport enum BackgroundNotificationResult {\n NoData = 1,\n NewData = 2,\n Failed = 3,\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackgroundNotificationTasksModule.web.d.ts","sourceRoot":"","sources":["../src/BackgroundNotificationTasksModule.web.ts"],"names":[],"mappings":";gCACoC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;kCAGpB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;;AAJ5D,wBAOE"}
|