@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,196 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.channels.managers;
|
|
2
|
+
|
|
3
|
+
import android.app.NotificationChannel;
|
|
4
|
+
import android.app.NotificationChannelGroup;
|
|
5
|
+
import android.content.Context;
|
|
6
|
+
import android.graphics.Color;
|
|
7
|
+
import android.media.AudioAttributes;
|
|
8
|
+
import android.net.Uri;
|
|
9
|
+
import android.os.Build;
|
|
10
|
+
import android.provider.Settings;
|
|
11
|
+
|
|
12
|
+
import expo.modules.core.arguments.MapArguments;
|
|
13
|
+
import expo.modules.core.arguments.ReadableArguments;
|
|
14
|
+
|
|
15
|
+
import java.util.List;
|
|
16
|
+
|
|
17
|
+
import androidx.annotation.NonNull;
|
|
18
|
+
import androidx.annotation.Nullable;
|
|
19
|
+
import androidx.annotation.RequiresApi;
|
|
20
|
+
import androidx.core.app.NotificationManagerCompat;
|
|
21
|
+
import expo.modules.notifications.notifications.SoundResolver;
|
|
22
|
+
import expo.modules.notifications.notifications.channels.InvalidVibrationPatternException;
|
|
23
|
+
import expo.modules.notifications.notifications.enums.AudioContentType;
|
|
24
|
+
import expo.modules.notifications.notifications.enums.AudioUsage;
|
|
25
|
+
import expo.modules.notifications.notifications.enums.NotificationVisibility;
|
|
26
|
+
|
|
27
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.AUDIO_ATTRIBUTES_CONTENT_TYPE_KEY;
|
|
28
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.AUDIO_ATTRIBUTES_FLAGS_ENFORCE_AUDIBILITY_KEY;
|
|
29
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.AUDIO_ATTRIBUTES_FLAGS_HW_AV_SYNC_KEY;
|
|
30
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.AUDIO_ATTRIBUTES_FLAGS_KEY;
|
|
31
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.AUDIO_ATTRIBUTES_USAGE_KEY;
|
|
32
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.BYPASS_DND_KEY;
|
|
33
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.DESCRIPTION_KEY;
|
|
34
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.ENABLE_LIGHTS_KEY;
|
|
35
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.ENABLE_VIBRATE_KEY;
|
|
36
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.GROUP_ID_KEY;
|
|
37
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.LIGHT_COLOR_KEY;
|
|
38
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.LOCKSCREEN_VISIBILITY_KEY;
|
|
39
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.SHOW_BADGE_KEY;
|
|
40
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.SOUND_AUDIO_ATTRIBUTES_KEY;
|
|
41
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.SOUND_KEY;
|
|
42
|
+
import static expo.modules.notifications.notifications.channels.serializers.NotificationsChannelSerializer.VIBRATION_PATTERN_KEY;
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
public class AndroidXNotificationsChannelManager implements NotificationsChannelManager {
|
|
46
|
+
private final NotificationManagerCompat mNotificationManager;
|
|
47
|
+
private NotificationsChannelGroupManager mNotificationsChannelGroupManager;
|
|
48
|
+
private final SoundResolver mSoundResolver;
|
|
49
|
+
|
|
50
|
+
public AndroidXNotificationsChannelManager(Context context, NotificationsChannelGroupManager groupManager) {
|
|
51
|
+
mNotificationManager = NotificationManagerCompat.from(context);
|
|
52
|
+
mSoundResolver = new SoundResolver(context);
|
|
53
|
+
mNotificationsChannelGroupManager = groupManager;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@Nullable
|
|
58
|
+
@Override
|
|
59
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
60
|
+
public NotificationChannel getNotificationChannel(@NonNull String channelId) {
|
|
61
|
+
return mNotificationManager.getNotificationChannel(channelId);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@NonNull
|
|
65
|
+
@Override
|
|
66
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
67
|
+
public List<NotificationChannel> getNotificationChannels() {
|
|
68
|
+
return mNotificationManager.getNotificationChannels();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@Override
|
|
72
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
73
|
+
public void deleteNotificationChannel(@NonNull String channelId) {
|
|
74
|
+
mNotificationManager.deleteNotificationChannel(channelId);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@Override
|
|
78
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
79
|
+
public NotificationChannel createNotificationChannel(@NonNull String channelId, CharSequence name, int importance, ReadableArguments channelOptions) {
|
|
80
|
+
NotificationChannel channel = new NotificationChannel(channelId, name, importance);
|
|
81
|
+
configureChannelWithOptions(channel, channelOptions);
|
|
82
|
+
mNotificationManager.createNotificationChannel(channel);
|
|
83
|
+
return channel;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Processing options
|
|
87
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
88
|
+
protected void configureChannelWithOptions(Object maybeChannel, ReadableArguments args) {
|
|
89
|
+
// We cannot use NotificationChannel in the signature of the method
|
|
90
|
+
// since it's a class available only on newer OSes and the adapter iterates
|
|
91
|
+
// through all the methods and triggers the NoClassDefFoundError.
|
|
92
|
+
if (!(maybeChannel instanceof NotificationChannel)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
NotificationChannel channel = (NotificationChannel) maybeChannel;
|
|
96
|
+
if (args.containsKey(BYPASS_DND_KEY)) {
|
|
97
|
+
channel.setBypassDnd(args.getBoolean(BYPASS_DND_KEY));
|
|
98
|
+
}
|
|
99
|
+
if (args.containsKey(DESCRIPTION_KEY)) {
|
|
100
|
+
channel.setDescription(args.getString(DESCRIPTION_KEY));
|
|
101
|
+
}
|
|
102
|
+
if (args.containsKey(LIGHT_COLOR_KEY)) {
|
|
103
|
+
channel.setLightColor(Color.parseColor(args.getString(LIGHT_COLOR_KEY)));
|
|
104
|
+
}
|
|
105
|
+
if (args.containsKey(GROUP_ID_KEY)) {
|
|
106
|
+
String groupId = args.getString(GROUP_ID_KEY);
|
|
107
|
+
NotificationChannelGroup group = mNotificationsChannelGroupManager.getNotificationChannelGroup(groupId);
|
|
108
|
+
if (group == null) {
|
|
109
|
+
group = mNotificationsChannelGroupManager.createNotificationChannelGroup(groupId, groupId, new MapArguments());
|
|
110
|
+
}
|
|
111
|
+
channel.setGroup(group.getId());
|
|
112
|
+
}
|
|
113
|
+
if (args.containsKey(LOCKSCREEN_VISIBILITY_KEY)) {
|
|
114
|
+
NotificationVisibility visibility = NotificationVisibility.fromEnumValue(args.getInt(LOCKSCREEN_VISIBILITY_KEY));
|
|
115
|
+
if (visibility != null) {
|
|
116
|
+
channel.setLockscreenVisibility(visibility.getNativeValue());
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (args.containsKey(SHOW_BADGE_KEY)) {
|
|
120
|
+
channel.setShowBadge(args.getBoolean(SHOW_BADGE_KEY));
|
|
121
|
+
}
|
|
122
|
+
if (args.containsKey(SOUND_KEY) || args.containsKey(SOUND_AUDIO_ATTRIBUTES_KEY)) {
|
|
123
|
+
Uri soundUri = createSoundUriFromArguments(args);
|
|
124
|
+
AudioAttributes soundAttributes = createAttributesFromArguments(args.getArguments(SOUND_AUDIO_ATTRIBUTES_KEY));
|
|
125
|
+
channel.setSound(soundUri, soundAttributes);
|
|
126
|
+
}
|
|
127
|
+
if (args.containsKey(VIBRATION_PATTERN_KEY)) {
|
|
128
|
+
channel.setVibrationPattern(createVibrationPatternFromList(args.getList(VIBRATION_PATTERN_KEY)));
|
|
129
|
+
}
|
|
130
|
+
if (args.containsKey(ENABLE_LIGHTS_KEY)) {
|
|
131
|
+
channel.enableLights(args.getBoolean(ENABLE_LIGHTS_KEY));
|
|
132
|
+
}
|
|
133
|
+
if (args.containsKey(ENABLE_VIBRATE_KEY)) {
|
|
134
|
+
channel.enableVibration(args.getBoolean(ENABLE_VIBRATE_KEY));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@Nullable
|
|
139
|
+
protected Uri createSoundUriFromArguments(ReadableArguments args) {
|
|
140
|
+
// The default is... the default sound.
|
|
141
|
+
if (!args.containsKey(SOUND_KEY)) {
|
|
142
|
+
return Settings.System.DEFAULT_NOTIFICATION_URI;
|
|
143
|
+
}
|
|
144
|
+
// "null" means "no sound"
|
|
145
|
+
String filename = args.getString(SOUND_KEY);
|
|
146
|
+
if (filename == null) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
// Otherwise it should be a sound filename
|
|
150
|
+
return mSoundResolver.resolve(filename);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@Nullable
|
|
154
|
+
protected long[] createVibrationPatternFromList(@Nullable List patternRequest) throws InvalidVibrationPatternException {
|
|
155
|
+
if (patternRequest == null) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
long[] pattern = new long[patternRequest.size()];
|
|
160
|
+
for (int i = 0; i < patternRequest.size(); i++) {
|
|
161
|
+
if (patternRequest.get(i) instanceof Number) {
|
|
162
|
+
pattern[i] = ((Number) patternRequest.get(i)).longValue();
|
|
163
|
+
} else {
|
|
164
|
+
throw new InvalidVibrationPatternException(i, patternRequest.get(i));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return pattern;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@Nullable
|
|
171
|
+
protected AudioAttributes createAttributesFromArguments(@Nullable ReadableArguments args) {
|
|
172
|
+
if (args == null) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
AudioAttributes.Builder attributesBuilder = new AudioAttributes.Builder();
|
|
177
|
+
if (args.containsKey(AUDIO_ATTRIBUTES_USAGE_KEY)) {
|
|
178
|
+
attributesBuilder.setUsage(AudioUsage.fromEnumValue(args.getInt(AUDIO_ATTRIBUTES_USAGE_KEY)).getNativeValue());
|
|
179
|
+
}
|
|
180
|
+
if (args.containsKey(AUDIO_ATTRIBUTES_CONTENT_TYPE_KEY)) {
|
|
181
|
+
attributesBuilder.setContentType(AudioContentType.fromEnumValue(args.getInt(AUDIO_ATTRIBUTES_CONTENT_TYPE_KEY)).getNativeValue());
|
|
182
|
+
}
|
|
183
|
+
if (args.containsKey(AUDIO_ATTRIBUTES_FLAGS_KEY)) {
|
|
184
|
+
int flags = 0;
|
|
185
|
+
ReadableArguments flagsArgs = args.getArguments(AUDIO_ATTRIBUTES_FLAGS_KEY);
|
|
186
|
+
if (flagsArgs.getBoolean(AUDIO_ATTRIBUTES_FLAGS_ENFORCE_AUDIBILITY_KEY)) {
|
|
187
|
+
flags |= AudioAttributes.FLAG_AUDIBILITY_ENFORCED;
|
|
188
|
+
}
|
|
189
|
+
if (flagsArgs.getBoolean(AUDIO_ATTRIBUTES_FLAGS_HW_AV_SYNC_KEY)) {
|
|
190
|
+
flags |= AudioAttributes.FLAG_HW_AV_SYNC;
|
|
191
|
+
}
|
|
192
|
+
attributesBuilder.setFlags(flags);
|
|
193
|
+
}
|
|
194
|
+
return attributesBuilder.build();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.channels.managers;
|
|
2
|
+
|
|
3
|
+
import android.app.NotificationChannelGroup;
|
|
4
|
+
import android.os.Build;
|
|
5
|
+
|
|
6
|
+
import expo.modules.core.arguments.ReadableArguments;
|
|
7
|
+
|
|
8
|
+
import java.util.List;
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.NonNull;
|
|
11
|
+
import androidx.annotation.Nullable;
|
|
12
|
+
import androidx.annotation.RequiresApi;
|
|
13
|
+
|
|
14
|
+
public interface NotificationsChannelGroupManager {
|
|
15
|
+
@Nullable
|
|
16
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
17
|
+
NotificationChannelGroup getNotificationChannelGroup(@NonNull String channelGroupId);
|
|
18
|
+
|
|
19
|
+
@NonNull
|
|
20
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
21
|
+
List<NotificationChannelGroup> getNotificationChannelGroups();
|
|
22
|
+
|
|
23
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
24
|
+
NotificationChannelGroup createNotificationChannelGroup(@NonNull String id, @NonNull CharSequence name, ReadableArguments groupOptions);
|
|
25
|
+
|
|
26
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
27
|
+
void deleteNotificationChannelGroup(@NonNull String groupId);
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.channels.managers;
|
|
2
|
+
|
|
3
|
+
import android.app.NotificationChannel;
|
|
4
|
+
import android.os.Build;
|
|
5
|
+
|
|
6
|
+
import expo.modules.core.arguments.ReadableArguments;
|
|
7
|
+
|
|
8
|
+
import java.util.List;
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.NonNull;
|
|
11
|
+
import androidx.annotation.Nullable;
|
|
12
|
+
import androidx.annotation.RequiresApi;
|
|
13
|
+
|
|
14
|
+
public interface NotificationsChannelManager {
|
|
15
|
+
@Nullable
|
|
16
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
17
|
+
NotificationChannel getNotificationChannel(@NonNull String channelId);
|
|
18
|
+
|
|
19
|
+
@NonNull
|
|
20
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
21
|
+
List<NotificationChannel> getNotificationChannels();
|
|
22
|
+
|
|
23
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
24
|
+
void deleteNotificationChannel(@NonNull String channelId);
|
|
25
|
+
|
|
26
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
27
|
+
NotificationChannel createNotificationChannel(@NonNull String channelId, CharSequence name, int importance, ReadableArguments channelOptions);
|
|
28
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.channels.serializers;
|
|
2
|
+
|
|
3
|
+
import android.app.NotificationChannel;
|
|
4
|
+
import android.app.NotificationChannelGroup;
|
|
5
|
+
import android.os.Build;
|
|
6
|
+
import android.os.Bundle;
|
|
7
|
+
|
|
8
|
+
import java.util.ArrayList;
|
|
9
|
+
import java.util.List;
|
|
10
|
+
|
|
11
|
+
import androidx.annotation.NonNull;
|
|
12
|
+
import androidx.annotation.Nullable;
|
|
13
|
+
import androidx.annotation.RequiresApi;
|
|
14
|
+
|
|
15
|
+
public class ExpoNotificationsChannelGroupSerializer implements NotificationsChannelGroupSerializer {
|
|
16
|
+
|
|
17
|
+
private NotificationsChannelSerializer mChannelSerializer;
|
|
18
|
+
|
|
19
|
+
public ExpoNotificationsChannelGroupSerializer(NotificationsChannelSerializer channelSerializer) {
|
|
20
|
+
mChannelSerializer = channelSerializer;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@Override
|
|
24
|
+
@Nullable
|
|
25
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
26
|
+
public Bundle toBundle(@Nullable NotificationChannelGroup group) {
|
|
27
|
+
if (group == null) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
Bundle result = new Bundle();
|
|
31
|
+
result.putString(ID_KEY, getId(group));
|
|
32
|
+
result.putString(NAME_KEY, group.getName().toString());
|
|
33
|
+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
|
|
34
|
+
result.putString(DESCRIPTION_KEY, group.getDescription());
|
|
35
|
+
result.putBoolean(IS_BLOCKED_KEY, group.isBlocked());
|
|
36
|
+
}
|
|
37
|
+
result.putParcelableArrayList(CHANNELS_KEY, toList(group.getChannels()));
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Nullable
|
|
42
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
43
|
+
protected String getId(@NonNull NotificationChannelGroup channel) {
|
|
44
|
+
return channel.getId();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
48
|
+
private ArrayList<Bundle> toList(List<NotificationChannel> channels) {
|
|
49
|
+
ArrayList<Bundle> results = new ArrayList<>(channels.size());
|
|
50
|
+
for (NotificationChannel channel : channels) {
|
|
51
|
+
results.add(mChannelSerializer.toBundle(channel));
|
|
52
|
+
}
|
|
53
|
+
return results;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.channels.serializers;
|
|
2
|
+
|
|
3
|
+
import android.app.NotificationChannel;
|
|
4
|
+
import android.graphics.Color;
|
|
5
|
+
import android.media.AudioAttributes;
|
|
6
|
+
import android.net.Uri;
|
|
7
|
+
import android.os.Build;
|
|
8
|
+
import android.os.Bundle;
|
|
9
|
+
import android.provider.Settings;
|
|
10
|
+
|
|
11
|
+
import androidx.annotation.NonNull;
|
|
12
|
+
import androidx.annotation.Nullable;
|
|
13
|
+
import androidx.annotation.RequiresApi;
|
|
14
|
+
import expo.modules.notifications.notifications.enums.AudioContentType;
|
|
15
|
+
import expo.modules.notifications.notifications.enums.AudioUsage;
|
|
16
|
+
import expo.modules.notifications.notifications.enums.NotificationImportance;
|
|
17
|
+
import expo.modules.notifications.notifications.enums.NotificationVisibility;
|
|
18
|
+
|
|
19
|
+
public class ExpoNotificationsChannelSerializer implements NotificationsChannelSerializer {
|
|
20
|
+
|
|
21
|
+
@Override
|
|
22
|
+
@Nullable
|
|
23
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
24
|
+
public Bundle toBundle(@Nullable NotificationChannel channel) {
|
|
25
|
+
if (channel == null) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
Bundle result = new Bundle();
|
|
30
|
+
result.putString(ID_KEY, getChannelId(channel));
|
|
31
|
+
result.putString(NAME_KEY, channel.getName().toString());
|
|
32
|
+
result.putInt(IMPORTANCE_KEY, NotificationImportance.fromNativeValue(channel.getImportance()).getEnumValue());
|
|
33
|
+
result.putBoolean(BYPASS_DND_KEY, channel.canBypassDnd());
|
|
34
|
+
result.putString(DESCRIPTION_KEY, channel.getDescription());
|
|
35
|
+
result.putString(GROUP_ID_KEY, getGroupId(channel));
|
|
36
|
+
result.putString(LIGHT_COLOR_KEY, String.format("#%08x", Color.valueOf(channel.getLightColor()).toArgb()).toUpperCase());
|
|
37
|
+
result.putInt(LOCKSCREEN_VISIBILITY_KEY, NotificationVisibility.fromNativeValue(channel.getLockscreenVisibility()).getEnumValue());
|
|
38
|
+
result.putBoolean(SHOW_BADGE_KEY, channel.canShowBadge());
|
|
39
|
+
result.putString(SOUND_KEY, toString(channel.getSound()));
|
|
40
|
+
result.putBundle(SOUND_AUDIO_ATTRIBUTES_KEY, toBundle(channel.getAudioAttributes()));
|
|
41
|
+
result.putDoubleArray(VIBRATION_PATTERN_KEY, toArray(channel.getVibrationPattern()));
|
|
42
|
+
result.putBoolean(ENABLE_LIGHTS_KEY, channel.shouldShowLights());
|
|
43
|
+
result.putBoolean(ENABLE_VIBRATE_KEY, channel.shouldVibrate());
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Nullable
|
|
48
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
49
|
+
protected String getChannelId(@NonNull NotificationChannel channel) {
|
|
50
|
+
return channel.getId();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@Nullable
|
|
54
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
55
|
+
protected String getGroupId(@NonNull NotificationChannel channel) {
|
|
56
|
+
return channel.getGroup();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@Nullable
|
|
60
|
+
private String toString(@Nullable Uri uri) {
|
|
61
|
+
if (uri == null) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (Settings.System.DEFAULT_NOTIFICATION_URI.equals(uri)) {
|
|
66
|
+
return "default";
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return "custom";
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private Bundle toBundle(@Nullable AudioAttributes attributes) {
|
|
73
|
+
if (attributes == null) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
Bundle result = new Bundle();
|
|
78
|
+
result.putInt(AUDIO_ATTRIBUTES_USAGE_KEY, AudioUsage.fromNativeValue(attributes.getUsage()).getEnumValue());
|
|
79
|
+
result.putInt(AUDIO_ATTRIBUTES_CONTENT_TYPE_KEY, AudioContentType.fromNativeValue(attributes.getContentType()).getEnumValue());
|
|
80
|
+
|
|
81
|
+
Bundle flags = new Bundle();
|
|
82
|
+
flags.putBoolean(AUDIO_ATTRIBUTES_FLAGS_HW_AV_SYNC_KEY, (attributes.getFlags() & AudioAttributes.FLAG_HW_AV_SYNC) > 0);
|
|
83
|
+
flags.putBoolean(AUDIO_ATTRIBUTES_FLAGS_ENFORCE_AUDIBILITY_KEY, (attributes.getFlags() & AudioAttributes.FLAG_AUDIBILITY_ENFORCED) > 0);
|
|
84
|
+
result.putBundle(AUDIO_ATTRIBUTES_FLAGS_KEY, flags);
|
|
85
|
+
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@Nullable
|
|
90
|
+
private double[] toArray(@Nullable long[] array) {
|
|
91
|
+
if (array == null) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
double[] result = new double[array.length];
|
|
96
|
+
for (int i = 0; i < array.length; i++) {
|
|
97
|
+
result[i] = array[i];
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.channels.serializers;
|
|
2
|
+
|
|
3
|
+
import android.app.NotificationChannelGroup;
|
|
4
|
+
import android.os.Build;
|
|
5
|
+
import android.os.Bundle;
|
|
6
|
+
|
|
7
|
+
import androidx.annotation.Nullable;
|
|
8
|
+
import androidx.annotation.RequiresApi;
|
|
9
|
+
|
|
10
|
+
public interface NotificationsChannelGroupSerializer {
|
|
11
|
+
String ID_KEY = "id";
|
|
12
|
+
String NAME_KEY = "name";
|
|
13
|
+
String DESCRIPTION_KEY = "description";
|
|
14
|
+
String IS_BLOCKED_KEY = "isBlocked";
|
|
15
|
+
String CHANNELS_KEY = "channels";
|
|
16
|
+
|
|
17
|
+
@Nullable
|
|
18
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
19
|
+
Bundle toBundle(@Nullable NotificationChannelGroup group);
|
|
20
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.channels.serializers;
|
|
2
|
+
|
|
3
|
+
import android.app.NotificationChannel;
|
|
4
|
+
import android.os.Build;
|
|
5
|
+
import android.os.Bundle;
|
|
6
|
+
|
|
7
|
+
import androidx.annotation.Nullable;
|
|
8
|
+
import androidx.annotation.RequiresApi;
|
|
9
|
+
|
|
10
|
+
public interface NotificationsChannelSerializer {
|
|
11
|
+
String ID_KEY = "id";
|
|
12
|
+
String NAME_KEY = "name";
|
|
13
|
+
String IMPORTANCE_KEY = "importance";
|
|
14
|
+
String BYPASS_DND_KEY = "bypassDnd";
|
|
15
|
+
String DESCRIPTION_KEY = "description";
|
|
16
|
+
String GROUP_ID_KEY = "groupId";
|
|
17
|
+
String LIGHT_COLOR_KEY = "lightColor";
|
|
18
|
+
String LOCKSCREEN_VISIBILITY_KEY = "lockscreenVisibility";
|
|
19
|
+
String SHOW_BADGE_KEY = "showBadge";
|
|
20
|
+
String SOUND_KEY = "sound";
|
|
21
|
+
String SOUND_AUDIO_ATTRIBUTES_KEY = "audioAttributes";
|
|
22
|
+
String VIBRATION_PATTERN_KEY = "vibrationPattern";
|
|
23
|
+
String ENABLE_LIGHTS_KEY = "enableLights";
|
|
24
|
+
String ENABLE_VIBRATE_KEY = "enableVibrate";
|
|
25
|
+
|
|
26
|
+
String AUDIO_ATTRIBUTES_USAGE_KEY = "usage";
|
|
27
|
+
String AUDIO_ATTRIBUTES_CONTENT_TYPE_KEY = "contentType";
|
|
28
|
+
String AUDIO_ATTRIBUTES_FLAGS_KEY = "flags";
|
|
29
|
+
String AUDIO_ATTRIBUTES_FLAGS_ENFORCE_AUDIBILITY_KEY = "enforceAudibility";
|
|
30
|
+
String AUDIO_ATTRIBUTES_FLAGS_HW_AV_SYNC_KEY = "requestHardwareAudioVideoSynchronization";
|
|
31
|
+
|
|
32
|
+
@Nullable
|
|
33
|
+
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
34
|
+
Bundle toBundle(@Nullable NotificationChannel channel);
|
|
35
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.emitting
|
|
2
|
+
|
|
3
|
+
import android.os.Bundle
|
|
4
|
+
import expo.modules.core.interfaces.services.EventEmitter
|
|
5
|
+
import expo.modules.kotlin.modules.Module
|
|
6
|
+
import expo.modules.kotlin.modules.ModuleDefinition
|
|
7
|
+
import expo.modules.notifications.ModuleNotFoundException
|
|
8
|
+
import expo.modules.notifications.notifications.NotificationSerializer
|
|
9
|
+
import expo.modules.notifications.notifications.interfaces.NotificationListener
|
|
10
|
+
import expo.modules.notifications.notifications.interfaces.NotificationManager
|
|
11
|
+
import expo.modules.notifications.notifications.model.Notification
|
|
12
|
+
import expo.modules.notifications.notifications.model.NotificationResponse
|
|
13
|
+
|
|
14
|
+
private const val NEW_MESSAGE_EVENT_NAME = "onDidReceiveNotification"
|
|
15
|
+
private const val NEW_RESPONSE_EVENT_NAME = "onDidReceiveNotificationResponse"
|
|
16
|
+
private const val MESSAGES_DELETED_EVENT_NAME = "onNotificationsDeleted"
|
|
17
|
+
|
|
18
|
+
open class NotificationsEmitter : Module(), NotificationListener {
|
|
19
|
+
private lateinit var notificationManager: NotificationManager
|
|
20
|
+
private var lastNotificationResponse: NotificationResponse? = null
|
|
21
|
+
private var eventEmitter: EventEmitter? = null
|
|
22
|
+
|
|
23
|
+
override fun definition() = ModuleDefinition {
|
|
24
|
+
Name("ExpoNotificationsEmitter")
|
|
25
|
+
|
|
26
|
+
OnCreate {
|
|
27
|
+
eventEmitter = appContext.legacyModule<EventEmitter>()
|
|
28
|
+
?: throw ModuleNotFoundException(EventEmitter::class)
|
|
29
|
+
|
|
30
|
+
// Register the module as a listener in NotificationManager singleton module.
|
|
31
|
+
// Deregistration happens in onDestroy callback.
|
|
32
|
+
notificationManager = requireNotNull(appContext.legacyModuleRegistry.getSingletonModule("NotificationManager", NotificationManager::class.java))
|
|
33
|
+
notificationManager.addListener(this@NotificationsEmitter)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
OnDestroy {
|
|
37
|
+
notificationManager.removeListener(this@NotificationsEmitter)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
AsyncFunction("getLastNotificationResponseAsync") {
|
|
41
|
+
lastNotificationResponse?.let(NotificationSerializer::toBundle)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Callback called when [NotificationManager] gets notified of a new notification.
|
|
47
|
+
* Emits a [NEW_MESSAGE_EVENT_NAME] event.
|
|
48
|
+
*
|
|
49
|
+
* @param notification Notification received
|
|
50
|
+
*/
|
|
51
|
+
override fun onNotificationReceived(notification: Notification) {
|
|
52
|
+
eventEmitter?.emit(NEW_MESSAGE_EVENT_NAME, NotificationSerializer.toBundle(notification))
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Callback called when [NotificationManager] gets notified of a new notification response.
|
|
57
|
+
* Emits a [NEW_RESPONSE_EVENT_NAME] event.
|
|
58
|
+
*
|
|
59
|
+
* @param response Notification response received
|
|
60
|
+
* @return Whether notification has been handled
|
|
61
|
+
*/
|
|
62
|
+
override fun onNotificationResponseReceived(response: NotificationResponse): Boolean {
|
|
63
|
+
lastNotificationResponse = response
|
|
64
|
+
eventEmitter?.let {
|
|
65
|
+
it.emit(NEW_RESPONSE_EVENT_NAME, NotificationSerializer.toBundle(response))
|
|
66
|
+
return true
|
|
67
|
+
}
|
|
68
|
+
return false
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Callback called when [NotificationManager] gets informed of the fact of message dropping.
|
|
73
|
+
* Emits a [MESSAGES_DELETED_EVENT_NAME] event.
|
|
74
|
+
*/
|
|
75
|
+
override fun onNotificationsDropped() {
|
|
76
|
+
eventEmitter?.emit(MESSAGES_DELETED_EVENT_NAME, Bundle.EMPTY)
|
|
77
|
+
}
|
|
78
|
+
}
|
package/android/src/main/java/expo/modules/notifications/notifications/enums/AudioContentType.java
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.enums;
|
|
2
|
+
|
|
3
|
+
import android.media.AudioAttributes;
|
|
4
|
+
|
|
5
|
+
public enum AudioContentType {
|
|
6
|
+
UNKNOWN(AudioAttributes.CONTENT_TYPE_UNKNOWN, 0),
|
|
7
|
+
SPEECH(AudioAttributes.CONTENT_TYPE_SPEECH, 1),
|
|
8
|
+
MUSIC(AudioAttributes.CONTENT_TYPE_MUSIC, 2),
|
|
9
|
+
MOVIE(AudioAttributes.CONTENT_TYPE_MOVIE, 3),
|
|
10
|
+
SONIFICIATION(AudioAttributes.CONTENT_TYPE_SONIFICATION, 4);
|
|
11
|
+
|
|
12
|
+
private final int mNativeVisibility;
|
|
13
|
+
private final int mEnumValue;
|
|
14
|
+
|
|
15
|
+
AudioContentType(int nativeVisibility, int enumValue) {
|
|
16
|
+
mNativeVisibility = nativeVisibility;
|
|
17
|
+
mEnumValue = enumValue;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public int getNativeValue() {
|
|
21
|
+
return mNativeVisibility;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public int getEnumValue() {
|
|
25
|
+
return mEnumValue;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public static AudioContentType fromEnumValue(int value) {
|
|
29
|
+
for (AudioContentType visibility : AudioContentType.values()) {
|
|
30
|
+
if (visibility.getEnumValue() == value) {
|
|
31
|
+
return visibility;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return AudioContentType.UNKNOWN;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public static AudioContentType fromNativeValue(int value) {
|
|
38
|
+
for (AudioContentType visibility : AudioContentType.values()) {
|
|
39
|
+
if (visibility.getEnumValue() == value) {
|
|
40
|
+
return visibility;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return AudioContentType.UNKNOWN;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
package expo.modules.notifications.notifications.enums;
|
|
2
|
+
|
|
3
|
+
import android.media.AudioAttributes;
|
|
4
|
+
|
|
5
|
+
public enum AudioUsage {
|
|
6
|
+
UNKNOWN(AudioAttributes.USAGE_UNKNOWN, 0),
|
|
7
|
+
MEDIA(AudioAttributes.USAGE_MEDIA, 1),
|
|
8
|
+
VOICE_COMMUNICATION(AudioAttributes.USAGE_VOICE_COMMUNICATION, 2),
|
|
9
|
+
VOICE_COMMUNICATION_SIGNALLING(AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING, 3),
|
|
10
|
+
ALARM(AudioAttributes.USAGE_ALARM, 4),
|
|
11
|
+
NOTIFICATION(AudioAttributes.USAGE_NOTIFICATION, 5),
|
|
12
|
+
NOTIFICATION_RINGTONE(AudioAttributes.USAGE_NOTIFICATION_RINGTONE, 6),
|
|
13
|
+
NOTIFICATION_COMMUNICATION_REQUEST(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST, 7),
|
|
14
|
+
NOTIFICATION_COMMUNICATION_INSTANT(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT, 8),
|
|
15
|
+
NOTIFICATION_COMMUNICATION_DELAYED(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_DELAYED, 9),
|
|
16
|
+
NOTIFICATION_EVENT(AudioAttributes.USAGE_NOTIFICATION_EVENT, 10),
|
|
17
|
+
ASSISTANCE_ACCESSIBILITY(AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY, 11),
|
|
18
|
+
ASSISTANCE_NAVIGATION_GUIDANCE(AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE, 12),
|
|
19
|
+
ASSISTANCE_SONIFICATION(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION, 13),
|
|
20
|
+
GAME(AudioAttributes.USAGE_GAME, 14);
|
|
21
|
+
|
|
22
|
+
private final int mNativeVisibility;
|
|
23
|
+
private final int mEnumValue;
|
|
24
|
+
|
|
25
|
+
AudioUsage(int nativeVisibility, int enumValue) {
|
|
26
|
+
mNativeVisibility = nativeVisibility;
|
|
27
|
+
mEnumValue = enumValue;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public int getNativeValue() {
|
|
31
|
+
return mNativeVisibility;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public int getEnumValue() {
|
|
35
|
+
return mEnumValue;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public static AudioUsage fromEnumValue(int value) {
|
|
39
|
+
for (AudioUsage usage : AudioUsage.values()) {
|
|
40
|
+
if (usage.getEnumValue() == value) {
|
|
41
|
+
return usage;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return AudioUsage.UNKNOWN;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static AudioUsage fromNativeValue(int value) {
|
|
48
|
+
for (AudioUsage usage : AudioUsage.values()) {
|
|
49
|
+
if (usage.getEnumValue() == value) {
|
|
50
|
+
return usage;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return AudioUsage.UNKNOWN;
|
|
54
|
+
}
|
|
55
|
+
}
|