@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,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withNotificationsAndroid = exports.withNotificationSounds = exports.withNotificationManifest = exports.withNotificationIconColor = exports.withNotificationIcons = exports.NOTIFICATION_ICON_COLOR_RESOURCE = exports.NOTIFICATION_ICON_COLOR = exports.NOTIFICATION_ICON_RESOURCE = exports.NOTIFICATION_ICON = exports.META_DATA_NOTIFICATION_ICON_COLOR = exports.META_DATA_NOTIFICATION_ICON = exports.dpiValues = exports.ANDROID_RES_PATH = void 0;
|
|
4
|
+
exports.getNotificationIcon = getNotificationIcon;
|
|
5
|
+
exports.getNotificationColor = getNotificationColor;
|
|
6
|
+
exports.setNotificationIconColor = setNotificationIconColor;
|
|
7
|
+
exports.setNotificationIconAsync = setNotificationIconAsync;
|
|
8
|
+
exports.setNotificationSounds = setNotificationSounds;
|
|
9
|
+
const image_utils_1 = require("@expo/image-utils");
|
|
10
|
+
const config_plugins_1 = require("expo/config-plugins");
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const path_1 = require("path");
|
|
13
|
+
const { Colors } = config_plugins_1.AndroidConfig;
|
|
14
|
+
exports.ANDROID_RES_PATH = 'android/app/src/main/res/';
|
|
15
|
+
exports.dpiValues = {
|
|
16
|
+
mdpi: { folderName: 'mipmap-mdpi', scale: 1 },
|
|
17
|
+
hdpi: { folderName: 'mipmap-hdpi', scale: 1.5 },
|
|
18
|
+
xhdpi: { folderName: 'mipmap-xhdpi', scale: 2 },
|
|
19
|
+
xxhdpi: { folderName: 'mipmap-xxhdpi', scale: 3 },
|
|
20
|
+
xxxhdpi: { folderName: 'mipmap-xxxhdpi', scale: 4 },
|
|
21
|
+
};
|
|
22
|
+
const { addMetaDataItemToMainApplication, getMainApplicationOrThrow, removeMetaDataItemFromMainApplication, } = config_plugins_1.AndroidConfig.Manifest;
|
|
23
|
+
const BASELINE_PIXEL_SIZE = 24;
|
|
24
|
+
const ERROR_MSG_PREFIX = 'An error occurred while configuring Android notifications. ';
|
|
25
|
+
exports.META_DATA_NOTIFICATION_ICON = 'expo.modules.notifications.default_notification_icon';
|
|
26
|
+
exports.META_DATA_NOTIFICATION_ICON_COLOR = 'expo.modules.notifications.default_notification_color';
|
|
27
|
+
exports.NOTIFICATION_ICON = 'notification_icon';
|
|
28
|
+
exports.NOTIFICATION_ICON_RESOURCE = `@drawable/${exports.NOTIFICATION_ICON}`;
|
|
29
|
+
exports.NOTIFICATION_ICON_COLOR = 'notification_icon_color';
|
|
30
|
+
exports.NOTIFICATION_ICON_COLOR_RESOURCE = `@color/${exports.NOTIFICATION_ICON_COLOR}`;
|
|
31
|
+
const withNotificationIcons = (config, { icon }) => {
|
|
32
|
+
// If no icon provided in the config plugin props, fallback to value from app.json
|
|
33
|
+
icon = icon || getNotificationIcon(config);
|
|
34
|
+
return (0, config_plugins_1.withDangerousMod)(config, [
|
|
35
|
+
'android',
|
|
36
|
+
async (config) => {
|
|
37
|
+
await setNotificationIconAsync(config.modRequest.projectRoot, icon);
|
|
38
|
+
return config;
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
};
|
|
42
|
+
exports.withNotificationIcons = withNotificationIcons;
|
|
43
|
+
const withNotificationIconColor = (config, { color }) => {
|
|
44
|
+
// If no color provided in the config plugin props, fallback to value from app.json
|
|
45
|
+
return (0, config_plugins_1.withAndroidColors)(config, (config) => {
|
|
46
|
+
color = color || getNotificationColor(config);
|
|
47
|
+
config.modResults = setNotificationIconColor(color, config.modResults);
|
|
48
|
+
return config;
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
exports.withNotificationIconColor = withNotificationIconColor;
|
|
52
|
+
const withNotificationManifest = (config, { icon, color }) => {
|
|
53
|
+
// If no icon or color provided in the config plugin props, fallback to value from app.json
|
|
54
|
+
icon = icon || getNotificationIcon(config);
|
|
55
|
+
color = color || getNotificationColor(config);
|
|
56
|
+
return (0, config_plugins_1.withAndroidManifest)(config, (config) => {
|
|
57
|
+
config.modResults = setNotificationConfig({ icon, color }, config.modResults);
|
|
58
|
+
return config;
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
exports.withNotificationManifest = withNotificationManifest;
|
|
62
|
+
const withNotificationSounds = (config, { sounds }) => {
|
|
63
|
+
return (0, config_plugins_1.withDangerousMod)(config, [
|
|
64
|
+
'android',
|
|
65
|
+
(config) => {
|
|
66
|
+
setNotificationSounds(config.modRequest.projectRoot, sounds);
|
|
67
|
+
return config;
|
|
68
|
+
},
|
|
69
|
+
]);
|
|
70
|
+
};
|
|
71
|
+
exports.withNotificationSounds = withNotificationSounds;
|
|
72
|
+
function getNotificationIcon(config) {
|
|
73
|
+
return config.notification?.icon || null;
|
|
74
|
+
}
|
|
75
|
+
function getNotificationColor(config) {
|
|
76
|
+
return config.notification?.color || null;
|
|
77
|
+
}
|
|
78
|
+
function setNotificationIconColor(color, colors) {
|
|
79
|
+
return Colors.assignColorValue(colors, {
|
|
80
|
+
name: exports.NOTIFICATION_ICON_COLOR,
|
|
81
|
+
value: color,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Applies notification icon configuration for expo-notifications
|
|
86
|
+
*/
|
|
87
|
+
async function setNotificationIconAsync(projectRoot, icon) {
|
|
88
|
+
if (icon) {
|
|
89
|
+
await writeNotificationIconImageFilesAsync(icon, projectRoot);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
removeNotificationIconImageFiles(projectRoot);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function setNotificationConfig(props, manifest) {
|
|
96
|
+
const mainApplication = getMainApplicationOrThrow(manifest);
|
|
97
|
+
if (props.icon) {
|
|
98
|
+
addMetaDataItemToMainApplication(mainApplication, exports.META_DATA_NOTIFICATION_ICON, exports.NOTIFICATION_ICON_RESOURCE, 'resource');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
removeMetaDataItemFromMainApplication(mainApplication, exports.META_DATA_NOTIFICATION_ICON);
|
|
102
|
+
}
|
|
103
|
+
if (props.color) {
|
|
104
|
+
addMetaDataItemToMainApplication(mainApplication, exports.META_DATA_NOTIFICATION_ICON_COLOR, exports.NOTIFICATION_ICON_COLOR_RESOURCE, 'resource');
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
removeMetaDataItemFromMainApplication(mainApplication, exports.META_DATA_NOTIFICATION_ICON_COLOR);
|
|
108
|
+
}
|
|
109
|
+
return manifest;
|
|
110
|
+
}
|
|
111
|
+
async function writeNotificationIconImageFilesAsync(icon, projectRoot) {
|
|
112
|
+
await Promise.all(Object.values(exports.dpiValues).map(async ({ folderName, scale }) => {
|
|
113
|
+
const drawableFolderName = folderName.replace('mipmap', 'drawable');
|
|
114
|
+
const dpiFolderPath = (0, path_1.resolve)(projectRoot, exports.ANDROID_RES_PATH, drawableFolderName);
|
|
115
|
+
if (!(0, fs_1.existsSync)(dpiFolderPath)) {
|
|
116
|
+
(0, fs_1.mkdirSync)(dpiFolderPath, { recursive: true });
|
|
117
|
+
}
|
|
118
|
+
const iconSizePx = BASELINE_PIXEL_SIZE * scale;
|
|
119
|
+
try {
|
|
120
|
+
const resizedIcon = (await (0, image_utils_1.generateImageAsync)({ projectRoot, cacheType: 'android-notification' }, {
|
|
121
|
+
src: icon,
|
|
122
|
+
width: iconSizePx,
|
|
123
|
+
height: iconSizePx,
|
|
124
|
+
resizeMode: 'cover',
|
|
125
|
+
backgroundColor: 'transparent',
|
|
126
|
+
})).source;
|
|
127
|
+
(0, fs_1.writeFileSync)((0, path_1.resolve)(dpiFolderPath, exports.NOTIFICATION_ICON + '.png'), resizedIcon);
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
throw new Error(ERROR_MSG_PREFIX + 'Encountered an issue resizing Android notification icon: ' + e);
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
function removeNotificationIconImageFiles(projectRoot) {
|
|
135
|
+
Object.values(exports.dpiValues).forEach(async ({ folderName }) => {
|
|
136
|
+
const drawableFolderName = folderName.replace('mipmap', 'drawable');
|
|
137
|
+
const dpiFolderPath = (0, path_1.resolve)(projectRoot, exports.ANDROID_RES_PATH, drawableFolderName);
|
|
138
|
+
const iconFile = (0, path_1.resolve)(dpiFolderPath, exports.NOTIFICATION_ICON + '.png');
|
|
139
|
+
if ((0, fs_1.existsSync)(iconFile)) {
|
|
140
|
+
(0, fs_1.unlinkSync)(iconFile);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Save sound files to `<project-root>/android/app/src/main/res/raw`
|
|
146
|
+
*/
|
|
147
|
+
function setNotificationSounds(projectRoot, sounds) {
|
|
148
|
+
if (!Array.isArray(sounds)) {
|
|
149
|
+
throw new Error(ERROR_MSG_PREFIX +
|
|
150
|
+
`Must provide an array of sound files in your app config, found ${typeof sounds}.`);
|
|
151
|
+
}
|
|
152
|
+
for (const soundFileRelativePath of sounds) {
|
|
153
|
+
writeNotificationSoundFile(soundFileRelativePath, projectRoot);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Copies the input file to the `<project-root>/android/app/src/main/res/raw` directory if
|
|
158
|
+
* there isn't already an existing file under that name.
|
|
159
|
+
*/
|
|
160
|
+
function writeNotificationSoundFile(soundFileRelativePath, projectRoot) {
|
|
161
|
+
const rawResourcesPath = (0, path_1.resolve)(projectRoot, exports.ANDROID_RES_PATH, 'raw');
|
|
162
|
+
const inputFilename = (0, path_1.basename)(soundFileRelativePath);
|
|
163
|
+
if (inputFilename) {
|
|
164
|
+
try {
|
|
165
|
+
const sourceFilepath = (0, path_1.resolve)(projectRoot, soundFileRelativePath);
|
|
166
|
+
const destinationFilepath = (0, path_1.resolve)(rawResourcesPath, inputFilename);
|
|
167
|
+
if (!(0, fs_1.existsSync)(rawResourcesPath)) {
|
|
168
|
+
(0, fs_1.mkdirSync)(rawResourcesPath, { recursive: true });
|
|
169
|
+
}
|
|
170
|
+
(0, fs_1.copyFileSync)(sourceFilepath, destinationFilepath);
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
throw new Error(ERROR_MSG_PREFIX + 'Encountered an issue copying Android notification sounds: ' + e);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const withNotificationsAndroid = (config, { icon = null, color = null, sounds = [] }) => {
|
|
178
|
+
config = (0, exports.withNotificationIconColor)(config, { color });
|
|
179
|
+
config = (0, exports.withNotificationIcons)(config, { icon });
|
|
180
|
+
config = (0, exports.withNotificationManifest)(config, { icon, color });
|
|
181
|
+
config = (0, exports.withNotificationSounds)(config, { sounds });
|
|
182
|
+
return config;
|
|
183
|
+
};
|
|
184
|
+
exports.withNotificationsAndroid = withNotificationsAndroid;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ConfigPlugin, XcodeProject } from 'expo/config-plugins';
|
|
2
|
+
import { NotificationsPluginProps } from './withNotifications';
|
|
3
|
+
export declare const withNotificationsIOS: ConfigPlugin<NotificationsPluginProps>;
|
|
4
|
+
export declare const withNotificationSounds: ConfigPlugin<{
|
|
5
|
+
sounds: string[];
|
|
6
|
+
}>;
|
|
7
|
+
/**
|
|
8
|
+
* Save sound files to the Xcode project root and add them to the Xcode project.
|
|
9
|
+
*/
|
|
10
|
+
export declare function setNotificationSounds(projectRoot: string, { sounds, project, projectName, }: {
|
|
11
|
+
sounds: string[];
|
|
12
|
+
project: XcodeProject;
|
|
13
|
+
projectName: string | undefined;
|
|
14
|
+
}): XcodeProject;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withNotificationSounds = exports.withNotificationsIOS = void 0;
|
|
4
|
+
exports.setNotificationSounds = setNotificationSounds;
|
|
5
|
+
const config_plugins_1 = require("expo/config-plugins");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const ERROR_MSG_PREFIX = 'An error occurred while configuring iOS notifications. ';
|
|
9
|
+
const withNotificationsIOS = (config, { mode = 'development', sounds = [] }) => {
|
|
10
|
+
config = (0, config_plugins_1.withEntitlementsPlist)(config, (config) => {
|
|
11
|
+
config.modResults['aps-environment'] = mode;
|
|
12
|
+
return config;
|
|
13
|
+
});
|
|
14
|
+
config = (0, exports.withNotificationSounds)(config, { sounds });
|
|
15
|
+
return config;
|
|
16
|
+
};
|
|
17
|
+
exports.withNotificationsIOS = withNotificationsIOS;
|
|
18
|
+
const withNotificationSounds = (config, { sounds }) => {
|
|
19
|
+
return (0, config_plugins_1.withXcodeProject)(config, (config) => {
|
|
20
|
+
setNotificationSounds(config.modRequest.projectRoot, {
|
|
21
|
+
sounds,
|
|
22
|
+
project: config.modResults,
|
|
23
|
+
projectName: config.modRequest.projectName,
|
|
24
|
+
});
|
|
25
|
+
return config;
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
exports.withNotificationSounds = withNotificationSounds;
|
|
29
|
+
/**
|
|
30
|
+
* Save sound files to the Xcode project root and add them to the Xcode project.
|
|
31
|
+
*/
|
|
32
|
+
function setNotificationSounds(projectRoot, { sounds, project, projectName, }) {
|
|
33
|
+
if (!projectName) {
|
|
34
|
+
throw new Error(ERROR_MSG_PREFIX + `Unable to find iOS project name.`);
|
|
35
|
+
}
|
|
36
|
+
if (!Array.isArray(sounds)) {
|
|
37
|
+
throw new Error(ERROR_MSG_PREFIX +
|
|
38
|
+
`Must provide an array of sound files in your app config, found ${typeof sounds}.`);
|
|
39
|
+
}
|
|
40
|
+
const sourceRoot = config_plugins_1.IOSConfig.Paths.getSourceRoot(projectRoot);
|
|
41
|
+
for (const soundFileRelativePath of sounds) {
|
|
42
|
+
const fileName = (0, path_1.basename)(soundFileRelativePath);
|
|
43
|
+
const sourceFilepath = (0, path_1.resolve)(projectRoot, soundFileRelativePath);
|
|
44
|
+
const destinationFilepath = (0, path_1.resolve)(sourceRoot, fileName);
|
|
45
|
+
// Since it's possible that the filename is the same, but the
|
|
46
|
+
// file itself id different, let's copy it regardless
|
|
47
|
+
(0, fs_1.copyFileSync)(sourceFilepath, destinationFilepath);
|
|
48
|
+
if (!project.hasFile(`${projectName}/${fileName}`)) {
|
|
49
|
+
project = config_plugins_1.IOSConfig.XcodeUtils.addResourceFileToGroup({
|
|
50
|
+
filepath: `${projectName}/${fileName}`,
|
|
51
|
+
groupName: projectName,
|
|
52
|
+
isBuildFile: true,
|
|
53
|
+
project,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return project;
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('expo-module-scripts/jest-preset-plugin');
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ConfigPlugin, createRunOncePlugin } from 'expo/config-plugins';
|
|
2
|
+
|
|
3
|
+
import { withNotificationsAndroid } from './withNotificationsAndroid';
|
|
4
|
+
import { withNotificationsIOS } from './withNotificationsIOS';
|
|
5
|
+
|
|
6
|
+
const pkg = require('expo-notifications/package.json');
|
|
7
|
+
|
|
8
|
+
export type NotificationsPluginProps = {
|
|
9
|
+
/**
|
|
10
|
+
* Local path to an image to use as the icon for push notifications.
|
|
11
|
+
* 96x96 all-white png with transparency. We recommend following
|
|
12
|
+
* [Google's design guidelines](https://material.io/design/iconography/product-icons.html#design-principles).
|
|
13
|
+
* @platform android
|
|
14
|
+
*/
|
|
15
|
+
icon?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Tint color for the push notification image when it appears in the notification tray.
|
|
18
|
+
* @default '#ffffff'
|
|
19
|
+
* @platform android
|
|
20
|
+
*/
|
|
21
|
+
color?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Array of local paths to sound files (.wav recommended) that can be used as custom notification sounds.
|
|
24
|
+
*/
|
|
25
|
+
sounds?: string[];
|
|
26
|
+
/**
|
|
27
|
+
* Environment of the app: either 'development' or 'production'.
|
|
28
|
+
* @default 'development'
|
|
29
|
+
* @platform ios
|
|
30
|
+
*/
|
|
31
|
+
mode?: 'development' | 'production';
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const withNotifications: ConfigPlugin<NotificationsPluginProps | void> = (config, props) => {
|
|
35
|
+
config = withNotificationsAndroid(config, props || {});
|
|
36
|
+
config = withNotificationsIOS(config, props || {});
|
|
37
|
+
return config;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default createRunOncePlugin(withNotifications, pkg.name, pkg.version);
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { generateImageAsync } from '@expo/image-utils';
|
|
2
|
+
import { ExpoConfig } from 'expo/config';
|
|
3
|
+
import {
|
|
4
|
+
AndroidConfig,
|
|
5
|
+
ConfigPlugin,
|
|
6
|
+
withDangerousMod,
|
|
7
|
+
withAndroidColors,
|
|
8
|
+
withAndroidManifest,
|
|
9
|
+
} from 'expo/config-plugins';
|
|
10
|
+
import { writeFileSync, unlinkSync, copyFileSync, existsSync, mkdirSync } from 'fs';
|
|
11
|
+
import { basename, resolve } from 'path';
|
|
12
|
+
|
|
13
|
+
import { NotificationsPluginProps } from './withNotifications';
|
|
14
|
+
|
|
15
|
+
const { Colors } = AndroidConfig;
|
|
16
|
+
|
|
17
|
+
type DPIString = 'mdpi' | 'hdpi' | 'xhdpi' | 'xxhdpi' | 'xxxhdpi';
|
|
18
|
+
type dpiMap = Record<DPIString, { folderName: string; scale: number }>;
|
|
19
|
+
|
|
20
|
+
export const ANDROID_RES_PATH = 'android/app/src/main/res/';
|
|
21
|
+
export const dpiValues: dpiMap = {
|
|
22
|
+
mdpi: { folderName: 'mipmap-mdpi', scale: 1 },
|
|
23
|
+
hdpi: { folderName: 'mipmap-hdpi', scale: 1.5 },
|
|
24
|
+
xhdpi: { folderName: 'mipmap-xhdpi', scale: 2 },
|
|
25
|
+
xxhdpi: { folderName: 'mipmap-xxhdpi', scale: 3 },
|
|
26
|
+
xxxhdpi: { folderName: 'mipmap-xxxhdpi', scale: 4 },
|
|
27
|
+
};
|
|
28
|
+
const {
|
|
29
|
+
addMetaDataItemToMainApplication,
|
|
30
|
+
getMainApplicationOrThrow,
|
|
31
|
+
removeMetaDataItemFromMainApplication,
|
|
32
|
+
} = AndroidConfig.Manifest;
|
|
33
|
+
const BASELINE_PIXEL_SIZE = 24;
|
|
34
|
+
const ERROR_MSG_PREFIX = 'An error occurred while configuring Android notifications. ';
|
|
35
|
+
export const META_DATA_NOTIFICATION_ICON = 'expo.modules.notifications.default_notification_icon';
|
|
36
|
+
export const META_DATA_NOTIFICATION_ICON_COLOR =
|
|
37
|
+
'expo.modules.notifications.default_notification_color';
|
|
38
|
+
export const NOTIFICATION_ICON = 'notification_icon';
|
|
39
|
+
export const NOTIFICATION_ICON_RESOURCE = `@drawable/${NOTIFICATION_ICON}`;
|
|
40
|
+
export const NOTIFICATION_ICON_COLOR = 'notification_icon_color';
|
|
41
|
+
export const NOTIFICATION_ICON_COLOR_RESOURCE = `@color/${NOTIFICATION_ICON_COLOR}`;
|
|
42
|
+
|
|
43
|
+
export const withNotificationIcons: ConfigPlugin<{ icon: string | null }> = (config, { icon }) => {
|
|
44
|
+
// If no icon provided in the config plugin props, fallback to value from app.json
|
|
45
|
+
icon = icon || getNotificationIcon(config);
|
|
46
|
+
return withDangerousMod(config, [
|
|
47
|
+
'android',
|
|
48
|
+
async (config) => {
|
|
49
|
+
await setNotificationIconAsync(config.modRequest.projectRoot, icon);
|
|
50
|
+
return config;
|
|
51
|
+
},
|
|
52
|
+
]);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const withNotificationIconColor: ConfigPlugin<{ color: string | null }> = (
|
|
56
|
+
config,
|
|
57
|
+
{ color }
|
|
58
|
+
) => {
|
|
59
|
+
// If no color provided in the config plugin props, fallback to value from app.json
|
|
60
|
+
return withAndroidColors(config, (config) => {
|
|
61
|
+
color = color || getNotificationColor(config);
|
|
62
|
+
config.modResults = setNotificationIconColor(color, config.modResults);
|
|
63
|
+
return config;
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export const withNotificationManifest: ConfigPlugin<{
|
|
68
|
+
icon: string | null;
|
|
69
|
+
color: string | null;
|
|
70
|
+
}> = (config, { icon, color }) => {
|
|
71
|
+
// If no icon or color provided in the config plugin props, fallback to value from app.json
|
|
72
|
+
icon = icon || getNotificationIcon(config);
|
|
73
|
+
color = color || getNotificationColor(config);
|
|
74
|
+
return withAndroidManifest(config, (config) => {
|
|
75
|
+
config.modResults = setNotificationConfig({ icon, color }, config.modResults);
|
|
76
|
+
return config;
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const withNotificationSounds: ConfigPlugin<{ sounds: string[] }> = (config, { sounds }) => {
|
|
81
|
+
return withDangerousMod(config, [
|
|
82
|
+
'android',
|
|
83
|
+
(config) => {
|
|
84
|
+
setNotificationSounds(config.modRequest.projectRoot, sounds);
|
|
85
|
+
return config;
|
|
86
|
+
},
|
|
87
|
+
]);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export function getNotificationIcon(config: ExpoConfig) {
|
|
91
|
+
return config.notification?.icon || null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function getNotificationColor(config: ExpoConfig) {
|
|
95
|
+
return config.notification?.color || null;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function setNotificationIconColor(
|
|
99
|
+
color: string | null,
|
|
100
|
+
colors: AndroidConfig.Resources.ResourceXML
|
|
101
|
+
) {
|
|
102
|
+
return Colors.assignColorValue(colors, {
|
|
103
|
+
name: NOTIFICATION_ICON_COLOR,
|
|
104
|
+
value: color,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Applies notification icon configuration for expo-notifications
|
|
110
|
+
*/
|
|
111
|
+
export async function setNotificationIconAsync(projectRoot: string, icon: string | null) {
|
|
112
|
+
if (icon) {
|
|
113
|
+
await writeNotificationIconImageFilesAsync(icon, projectRoot);
|
|
114
|
+
} else {
|
|
115
|
+
removeNotificationIconImageFiles(projectRoot);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function setNotificationConfig(
|
|
120
|
+
props: { icon: string | null; color: string | null },
|
|
121
|
+
manifest: AndroidConfig.Manifest.AndroidManifest
|
|
122
|
+
) {
|
|
123
|
+
const mainApplication = getMainApplicationOrThrow(manifest);
|
|
124
|
+
if (props.icon) {
|
|
125
|
+
addMetaDataItemToMainApplication(
|
|
126
|
+
mainApplication,
|
|
127
|
+
META_DATA_NOTIFICATION_ICON,
|
|
128
|
+
NOTIFICATION_ICON_RESOURCE,
|
|
129
|
+
'resource'
|
|
130
|
+
);
|
|
131
|
+
} else {
|
|
132
|
+
removeMetaDataItemFromMainApplication(mainApplication, META_DATA_NOTIFICATION_ICON);
|
|
133
|
+
}
|
|
134
|
+
if (props.color) {
|
|
135
|
+
addMetaDataItemToMainApplication(
|
|
136
|
+
mainApplication,
|
|
137
|
+
META_DATA_NOTIFICATION_ICON_COLOR,
|
|
138
|
+
NOTIFICATION_ICON_COLOR_RESOURCE,
|
|
139
|
+
'resource'
|
|
140
|
+
);
|
|
141
|
+
} else {
|
|
142
|
+
removeMetaDataItemFromMainApplication(mainApplication, META_DATA_NOTIFICATION_ICON_COLOR);
|
|
143
|
+
}
|
|
144
|
+
return manifest;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
async function writeNotificationIconImageFilesAsync(icon: string, projectRoot: string) {
|
|
148
|
+
await Promise.all(
|
|
149
|
+
Object.values(dpiValues).map(async ({ folderName, scale }) => {
|
|
150
|
+
const drawableFolderName = folderName.replace('mipmap', 'drawable');
|
|
151
|
+
const dpiFolderPath = resolve(projectRoot, ANDROID_RES_PATH, drawableFolderName);
|
|
152
|
+
if (!existsSync(dpiFolderPath)) {
|
|
153
|
+
mkdirSync(dpiFolderPath, { recursive: true });
|
|
154
|
+
}
|
|
155
|
+
const iconSizePx = BASELINE_PIXEL_SIZE * scale;
|
|
156
|
+
|
|
157
|
+
try {
|
|
158
|
+
const resizedIcon = (
|
|
159
|
+
await generateImageAsync(
|
|
160
|
+
{ projectRoot, cacheType: 'android-notification' },
|
|
161
|
+
{
|
|
162
|
+
src: icon,
|
|
163
|
+
width: iconSizePx,
|
|
164
|
+
height: iconSizePx,
|
|
165
|
+
resizeMode: 'cover',
|
|
166
|
+
backgroundColor: 'transparent',
|
|
167
|
+
}
|
|
168
|
+
)
|
|
169
|
+
).source;
|
|
170
|
+
writeFileSync(resolve(dpiFolderPath, NOTIFICATION_ICON + '.png'), resizedIcon);
|
|
171
|
+
} catch (e) {
|
|
172
|
+
throw new Error(
|
|
173
|
+
ERROR_MSG_PREFIX + 'Encountered an issue resizing Android notification icon: ' + e
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
})
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function removeNotificationIconImageFiles(projectRoot: string) {
|
|
181
|
+
Object.values(dpiValues).forEach(async ({ folderName }) => {
|
|
182
|
+
const drawableFolderName = folderName.replace('mipmap', 'drawable');
|
|
183
|
+
const dpiFolderPath = resolve(projectRoot, ANDROID_RES_PATH, drawableFolderName);
|
|
184
|
+
const iconFile = resolve(dpiFolderPath, NOTIFICATION_ICON + '.png');
|
|
185
|
+
if (existsSync(iconFile)) {
|
|
186
|
+
unlinkSync(iconFile);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Save sound files to `<project-root>/android/app/src/main/res/raw`
|
|
193
|
+
*/
|
|
194
|
+
export function setNotificationSounds(projectRoot: string, sounds: string[]) {
|
|
195
|
+
if (!Array.isArray(sounds)) {
|
|
196
|
+
throw new Error(
|
|
197
|
+
ERROR_MSG_PREFIX +
|
|
198
|
+
`Must provide an array of sound files in your app config, found ${typeof sounds}.`
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
for (const soundFileRelativePath of sounds) {
|
|
202
|
+
writeNotificationSoundFile(soundFileRelativePath, projectRoot);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Copies the input file to the `<project-root>/android/app/src/main/res/raw` directory if
|
|
208
|
+
* there isn't already an existing file under that name.
|
|
209
|
+
*/
|
|
210
|
+
function writeNotificationSoundFile(soundFileRelativePath: string, projectRoot: string) {
|
|
211
|
+
const rawResourcesPath = resolve(projectRoot, ANDROID_RES_PATH, 'raw');
|
|
212
|
+
const inputFilename = basename(soundFileRelativePath);
|
|
213
|
+
|
|
214
|
+
if (inputFilename) {
|
|
215
|
+
try {
|
|
216
|
+
const sourceFilepath = resolve(projectRoot, soundFileRelativePath);
|
|
217
|
+
const destinationFilepath = resolve(rawResourcesPath, inputFilename);
|
|
218
|
+
if (!existsSync(rawResourcesPath)) {
|
|
219
|
+
mkdirSync(rawResourcesPath, { recursive: true });
|
|
220
|
+
}
|
|
221
|
+
copyFileSync(sourceFilepath, destinationFilepath);
|
|
222
|
+
} catch (e) {
|
|
223
|
+
throw new Error(
|
|
224
|
+
ERROR_MSG_PREFIX + 'Encountered an issue copying Android notification sounds: ' + e
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export const withNotificationsAndroid: ConfigPlugin<NotificationsPluginProps> = (
|
|
231
|
+
config,
|
|
232
|
+
{ icon = null, color = null, sounds = [] }
|
|
233
|
+
) => {
|
|
234
|
+
config = withNotificationIconColor(config, { color });
|
|
235
|
+
config = withNotificationIcons(config, { icon });
|
|
236
|
+
config = withNotificationManifest(config, { icon, color });
|
|
237
|
+
config = withNotificationSounds(config, { sounds });
|
|
238
|
+
return config;
|
|
239
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ConfigPlugin,
|
|
3
|
+
withEntitlementsPlist,
|
|
4
|
+
IOSConfig,
|
|
5
|
+
withXcodeProject,
|
|
6
|
+
XcodeProject,
|
|
7
|
+
} from 'expo/config-plugins';
|
|
8
|
+
import { copyFileSync } from 'fs';
|
|
9
|
+
import { basename, resolve } from 'path';
|
|
10
|
+
|
|
11
|
+
import { NotificationsPluginProps } from './withNotifications';
|
|
12
|
+
|
|
13
|
+
const ERROR_MSG_PREFIX = 'An error occurred while configuring iOS notifications. ';
|
|
14
|
+
|
|
15
|
+
export const withNotificationsIOS: ConfigPlugin<NotificationsPluginProps> = (
|
|
16
|
+
config,
|
|
17
|
+
{ mode = 'development', sounds = [] }
|
|
18
|
+
) => {
|
|
19
|
+
config = withEntitlementsPlist(config, (config) => {
|
|
20
|
+
config.modResults['aps-environment'] = mode;
|
|
21
|
+
return config;
|
|
22
|
+
});
|
|
23
|
+
config = withNotificationSounds(config, { sounds });
|
|
24
|
+
return config;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const withNotificationSounds: ConfigPlugin<{ sounds: string[] }> = (config, { sounds }) => {
|
|
28
|
+
return withXcodeProject(config, (config) => {
|
|
29
|
+
setNotificationSounds(config.modRequest.projectRoot, {
|
|
30
|
+
sounds,
|
|
31
|
+
project: config.modResults,
|
|
32
|
+
projectName: config.modRequest.projectName,
|
|
33
|
+
});
|
|
34
|
+
return config;
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Save sound files to the Xcode project root and add them to the Xcode project.
|
|
40
|
+
*/
|
|
41
|
+
export function setNotificationSounds(
|
|
42
|
+
projectRoot: string,
|
|
43
|
+
{
|
|
44
|
+
sounds,
|
|
45
|
+
project,
|
|
46
|
+
projectName,
|
|
47
|
+
}: { sounds: string[]; project: XcodeProject; projectName: string | undefined }
|
|
48
|
+
): XcodeProject {
|
|
49
|
+
if (!projectName) {
|
|
50
|
+
throw new Error(ERROR_MSG_PREFIX + `Unable to find iOS project name.`);
|
|
51
|
+
}
|
|
52
|
+
if (!Array.isArray(sounds)) {
|
|
53
|
+
throw new Error(
|
|
54
|
+
ERROR_MSG_PREFIX +
|
|
55
|
+
`Must provide an array of sound files in your app config, found ${typeof sounds}.`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
const sourceRoot = IOSConfig.Paths.getSourceRoot(projectRoot);
|
|
59
|
+
for (const soundFileRelativePath of sounds) {
|
|
60
|
+
const fileName = basename(soundFileRelativePath);
|
|
61
|
+
const sourceFilepath = resolve(projectRoot, soundFileRelativePath);
|
|
62
|
+
const destinationFilepath = resolve(sourceRoot, fileName);
|
|
63
|
+
|
|
64
|
+
// Since it's possible that the filename is the same, but the
|
|
65
|
+
// file itself id different, let's copy it regardless
|
|
66
|
+
copyFileSync(sourceFilepath, destinationFilepath);
|
|
67
|
+
if (!project.hasFile(`${projectName}/${fileName}`)) {
|
|
68
|
+
project = IOSConfig.XcodeUtils.addResourceFileToGroup({
|
|
69
|
+
filepath: `${projectName}/${fileName}`,
|
|
70
|
+
groupName: projectName,
|
|
71
|
+
isBuildFile: true,
|
|
72
|
+
project,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return project;
|
|
78
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { requireNativeModule } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
import { BackgroundNotificationTasksModule } from './BackgroundNotificationTasksModule.types';
|
|
4
|
+
|
|
5
|
+
export default requireNativeModule<BackgroundNotificationTasksModule>(
|
|
6
|
+
'ExpoBackgroundNotificationTasksModule'
|
|
7
|
+
);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BackgroundNotificationTasksModule } from './BackgroundNotificationTasksModule.types';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
addListener: () => {},
|
|
5
|
+
removeListeners: () => {},
|
|
6
|
+
registerTaskAsync: async () => null,
|
|
7
|
+
unregisterTaskAsync: async () => null,
|
|
8
|
+
} as BackgroundNotificationTasksModule;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ProxyNativeModule } from 'expo-modules-core';
|
|
2
|
+
|
|
3
|
+
export interface BackgroundNotificationTasksModule extends ProxyNativeModule {
|
|
4
|
+
registerTaskAsync: (taskName: string) => Promise<null>;
|
|
5
|
+
unregisterTaskAsync: (taskName: string) => Promise<null>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum BackgroundNotificationResult {
|
|
9
|
+
NoData = 1,
|
|
10
|
+
NewData = 2,
|
|
11
|
+
Failed = 3,
|
|
12
|
+
}
|