@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.
Files changed (686) hide show
  1. package/.eslintrc.js +2 -0
  2. package/CHANGELOG.md +478 -0
  3. package/LICENSE +7 -0
  4. package/README.kepler.md +3 -0
  5. package/README.md +2003 -0
  6. package/THIRD_PARTY_NOTICES.txt +4 -0
  7. package/android/build.gradle +125 -0
  8. package/android/src/main/AndroidManifest.xml +39 -0
  9. package/android/src/main/java/expo/modules/notifications/Exceptions.kt +22 -0
  10. package/android/src/main/java/expo/modules/notifications/NotificationsPackage.java +34 -0
  11. package/android/src/main/java/expo/modules/notifications/Utils.kt +19 -0
  12. package/android/src/main/java/expo/modules/notifications/badge/BadgeHelper.kt +24 -0
  13. package/android/src/main/java/expo/modules/notifications/badge/BadgeModule.kt +22 -0
  14. package/android/src/main/java/expo/modules/notifications/notifications/ArgumentsNotificationContentBuilder.java +149 -0
  15. package/android/src/main/java/expo/modules/notifications/notifications/JSONNotificationContentBuilder.java +203 -0
  16. package/android/src/main/java/expo/modules/notifications/notifications/NotificationManager.java +119 -0
  17. package/android/src/main/java/expo/modules/notifications/notifications/NotificationSerializer.java +202 -0
  18. package/android/src/main/java/expo/modules/notifications/notifications/RemoteMessageSerializer.java +104 -0
  19. package/android/src/main/java/expo/modules/notifications/notifications/SoundResolver.java +58 -0
  20. package/android/src/main/java/expo/modules/notifications/notifications/background/BackgroundRemoteNotificationTaskConsumer.java +123 -0
  21. package/android/src/main/java/expo/modules/notifications/notifications/background/ExpoBackgroundNotificationTasksModule.kt +33 -0
  22. package/android/src/main/java/expo/modules/notifications/notifications/categories/ExpoNotificationCategoriesModule.kt +149 -0
  23. package/android/src/main/java/expo/modules/notifications/notifications/categories/serializers/ExpoNotificationsCategoriesSerializer.java +67 -0
  24. package/android/src/main/java/expo/modules/notifications/notifications/categories/serializers/NotificationsCategoriesSerializer.java +11 -0
  25. package/android/src/main/java/expo/modules/notifications/notifications/channels/AbstractNotificationsChannelsProvider.java +81 -0
  26. package/android/src/main/java/expo/modules/notifications/notifications/channels/AndroidXNotificationsChannelsProvider.java +38 -0
  27. package/android/src/main/java/expo/modules/notifications/notifications/channels/InvalidVibrationPatternException.java +14 -0
  28. package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationChannelGroupManagerModule.kt +70 -0
  29. package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationChannelManagerModule.kt +83 -0
  30. package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationsChannelsProvider.java +13 -0
  31. package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/AndroidXNotificationsChannelGroupManager.java +67 -0
  32. package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/AndroidXNotificationsChannelManager.java +196 -0
  33. package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/NotificationsChannelGroupManager.java +28 -0
  34. package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/NotificationsChannelManager.java +28 -0
  35. package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/ExpoNotificationsChannelGroupSerializer.java +55 -0
  36. package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/ExpoNotificationsChannelSerializer.java +101 -0
  37. package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/NotificationsChannelGroupSerializer.java +20 -0
  38. package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/NotificationsChannelSerializer.java +35 -0
  39. package/android/src/main/java/expo/modules/notifications/notifications/emitting/NotificationsEmitter.kt +78 -0
  40. package/android/src/main/java/expo/modules/notifications/notifications/enums/AudioContentType.java +45 -0
  41. package/android/src/main/java/expo/modules/notifications/notifications/enums/AudioUsage.java +55 -0
  42. package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationImportance.java +48 -0
  43. package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationPriority.java +51 -0
  44. package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationVisibility.java +44 -0
  45. package/android/src/main/java/expo/modules/notifications/notifications/handling/NotificationsHandler.kt +127 -0
  46. package/android/src/main/java/expo/modules/notifications/notifications/handling/SingleNotificationHandlerTask.java +131 -0
  47. package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationBuilder.java +35 -0
  48. package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationListener.java +37 -0
  49. package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationManager.java +22 -0
  50. package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationPresentationEffect.java +11 -0
  51. package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationPresentationEffectsManager.java +7 -0
  52. package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationTrigger.java +19 -0
  53. package/android/src/main/java/expo/modules/notifications/notifications/interfaces/SchedulableNotificationTrigger.java +20 -0
  54. package/android/src/main/java/expo/modules/notifications/notifications/model/Notification.java +59 -0
  55. package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationAction.java +63 -0
  56. package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationBehavior.java +84 -0
  57. package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationCategory.java +61 -0
  58. package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java +356 -0
  59. package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationRequest.java +66 -0
  60. package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationResponse.java +60 -0
  61. package/android/src/main/java/expo/modules/notifications/notifications/model/TextInputNotificationAction.java +42 -0
  62. package/android/src/main/java/expo/modules/notifications/notifications/model/TextInputNotificationResponse.java +42 -0
  63. package/android/src/main/java/expo/modules/notifications/notifications/model/triggers/FirebaseNotificationTrigger.java +61 -0
  64. package/android/src/main/java/expo/modules/notifications/notifications/presentation/ExpoNotificationPresentationEffectsManager.java +63 -0
  65. package/android/src/main/java/expo/modules/notifications/notifications/presentation/ExpoNotificationPresentationModule.kt +113 -0
  66. package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/BaseNotificationBuilder.java +50 -0
  67. package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/CategoryAwareNotificationBuilder.java +80 -0
  68. package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ChannelAwareNotificationBuilder.java +135 -0
  69. package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.java +295 -0
  70. package/android/src/main/java/expo/modules/notifications/notifications/presentation/effects/BaseNotificationEffect.java +53 -0
  71. package/android/src/main/java/expo/modules/notifications/notifications/scheduling/NotificationScheduler.kt +235 -0
  72. package/android/src/main/java/expo/modules/notifications/notifications/triggers/ChannelAwareTrigger.java +49 -0
  73. package/android/src/main/java/expo/modules/notifications/notifications/triggers/DailyTrigger.java +76 -0
  74. package/android/src/main/java/expo/modules/notifications/notifications/triggers/DateTrigger.java +64 -0
  75. package/android/src/main/java/expo/modules/notifications/notifications/triggers/TimeIntervalTrigger.java +87 -0
  76. package/android/src/main/java/expo/modules/notifications/notifications/triggers/WeeklyTrigger.java +85 -0
  77. package/android/src/main/java/expo/modules/notifications/notifications/triggers/YearlyTrigger.java +94 -0
  78. package/android/src/main/java/expo/modules/notifications/permissions/NotificationPermissionsModule.kt +124 -0
  79. package/android/src/main/java/expo/modules/notifications/serverregistration/InstallationId.java +134 -0
  80. package/android/src/main/java/expo/modules/notifications/serverregistration/RegistrationInfo.kt +24 -0
  81. package/android/src/main/java/expo/modules/notifications/serverregistration/ServerRegistrationModule.kt +32 -0
  82. package/android/src/main/java/expo/modules/notifications/service/ExpoFirebaseMessagingService.kt +15 -0
  83. package/android/src/main/java/expo/modules/notifications/service/NotificationForwarderActivity.kt +33 -0
  84. package/android/src/main/java/expo/modules/notifications/service/NotificationsService.kt +780 -0
  85. package/android/src/main/java/expo/modules/notifications/service/delegates/Base64Serialization.kt +33 -0
  86. package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoCategoriesDelegate.kt +21 -0
  87. package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoHandlingDelegate.kt +146 -0
  88. package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoPresentationDelegate.kt +193 -0
  89. package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoSchedulingDelegate.kt +117 -0
  90. package/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt +126 -0
  91. package/android/src/main/java/expo/modules/notifications/service/delegates/SharedPreferencesNotificationCategoriesStore.kt +106 -0
  92. package/android/src/main/java/expo/modules/notifications/service/delegates/SharedPreferencesNotificationsStore.kt +119 -0
  93. package/android/src/main/java/expo/modules/notifications/service/interfaces/CategoriesDelegate.kt +14 -0
  94. package/android/src/main/java/expo/modules/notifications/service/interfaces/FirebaseMessagingDelegate.kt +20 -0
  95. package/android/src/main/java/expo/modules/notifications/service/interfaces/HandlingDelegate.kt +10 -0
  96. package/android/src/main/java/expo/modules/notifications/service/interfaces/PresentationDelegate.kt +11 -0
  97. package/android/src/main/java/expo/modules/notifications/service/interfaces/SchedulingDelegate.kt +13 -0
  98. package/android/src/main/java/expo/modules/notifications/tokens/PushTokenManager.java +88 -0
  99. package/android/src/main/java/expo/modules/notifications/tokens/PushTokenModule.kt +91 -0
  100. package/android/src/main/java/expo/modules/notifications/tokens/interfaces/FirebaseTokenListener.java +16 -0
  101. package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenListener.java +14 -0
  102. package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenManager.java +22 -0
  103. package/android/src/main/res/values/strings.xml +4 -0
  104. package/app.plugin.js +1 -0
  105. package/build/BackgroundNotificationTasksModule.d.ts +4 -0
  106. package/build/BackgroundNotificationTasksModule.d.ts.map +1 -0
  107. package/build/BackgroundNotificationTasksModule.js +7 -0
  108. package/build/BackgroundNotificationTasksModule.js.map +1 -0
  109. package/build/BackgroundNotificationTasksModule.kepler.d.ts +3 -0
  110. package/build/BackgroundNotificationTasksModule.kepler.d.ts.map +1 -0
  111. package/build/BackgroundNotificationTasksModule.kepler.js +9 -0
  112. package/build/BackgroundNotificationTasksModule.kepler.js.map +1 -0
  113. package/build/BackgroundNotificationTasksModule.native.d.ts +4 -0
  114. package/build/BackgroundNotificationTasksModule.native.d.ts.map +1 -0
  115. package/build/BackgroundNotificationTasksModule.native.js +3 -0
  116. package/build/BackgroundNotificationTasksModule.native.js.map +1 -0
  117. package/build/BackgroundNotificationTasksModule.types.d.ts +11 -0
  118. package/build/BackgroundNotificationTasksModule.types.d.ts.map +1 -0
  119. package/build/BackgroundNotificationTasksModule.types.js +7 -0
  120. package/build/BackgroundNotificationTasksModule.types.js.map +1 -0
  121. package/build/BackgroundNotificationTasksModule.web.d.ts +6 -0
  122. package/build/BackgroundNotificationTasksModule.web.d.ts.map +1 -0
  123. package/build/BackgroundNotificationTasksModule.web.js +9 -0
  124. package/build/BackgroundNotificationTasksModule.web.js.map +1 -0
  125. package/build/BadgeModule.d.ts +4 -0
  126. package/build/BadgeModule.d.ts.map +1 -0
  127. package/build/BadgeModule.js +5 -0
  128. package/build/BadgeModule.js.map +1 -0
  129. package/build/BadgeModule.kepler.d.ts +3 -0
  130. package/build/BadgeModule.kepler.d.ts.map +1 -0
  131. package/build/BadgeModule.kepler.js +9 -0
  132. package/build/BadgeModule.kepler.js.map +1 -0
  133. package/build/BadgeModule.native.d.ts +4 -0
  134. package/build/BadgeModule.native.d.ts.map +1 -0
  135. package/build/BadgeModule.native.js +12 -0
  136. package/build/BadgeModule.native.js.map +1 -0
  137. package/build/BadgeModule.types.d.ts +10 -0
  138. package/build/BadgeModule.types.d.ts.map +1 -0
  139. package/build/BadgeModule.types.js +2 -0
  140. package/build/BadgeModule.types.js.map +1 -0
  141. package/build/BadgeModule.web.d.ts +4 -0
  142. package/build/BadgeModule.web.d.ts.map +1 -0
  143. package/build/BadgeModule.web.js +26 -0
  144. package/build/BadgeModule.web.js.map +1 -0
  145. package/build/DevicePushTokenAutoRegistration.fx.d.ts +15 -0
  146. package/build/DevicePushTokenAutoRegistration.fx.d.ts.map +1 -0
  147. package/build/DevicePushTokenAutoRegistration.fx.js +87 -0
  148. package/build/DevicePushTokenAutoRegistration.fx.js.map +1 -0
  149. package/build/NotificationCategoriesModule.d.ts +4 -0
  150. package/build/NotificationCategoriesModule.d.ts.map +1 -0
  151. package/build/NotificationCategoriesModule.js +13 -0
  152. package/build/NotificationCategoriesModule.js.map +1 -0
  153. package/build/NotificationCategoriesModule.kepler.d.ts +3 -0
  154. package/build/NotificationCategoriesModule.kepler.d.ts.map +1 -0
  155. package/build/NotificationCategoriesModule.kepler.js +10 -0
  156. package/build/NotificationCategoriesModule.kepler.js.map +1 -0
  157. package/build/NotificationCategoriesModule.native.d.ts +4 -0
  158. package/build/NotificationCategoriesModule.native.d.ts.map +1 -0
  159. package/build/NotificationCategoriesModule.native.js +3 -0
  160. package/build/NotificationCategoriesModule.native.js.map +1 -0
  161. package/build/NotificationCategoriesModule.types.d.ts +17 -0
  162. package/build/NotificationCategoriesModule.types.d.ts.map +1 -0
  163. package/build/NotificationCategoriesModule.types.js +2 -0
  164. package/build/NotificationCategoriesModule.types.js.map +1 -0
  165. package/build/NotificationCategoriesModule.web.d.ts +8 -0
  166. package/build/NotificationCategoriesModule.web.d.ts.map +1 -0
  167. package/build/NotificationCategoriesModule.web.js +12 -0
  168. package/build/NotificationCategoriesModule.web.js.map +1 -0
  169. package/build/NotificationChannelGroupManager.d.ts +4 -0
  170. package/build/NotificationChannelGroupManager.d.ts.map +1 -0
  171. package/build/NotificationChannelGroupManager.js +5 -0
  172. package/build/NotificationChannelGroupManager.js.map +1 -0
  173. package/build/NotificationChannelGroupManager.kepler.d.ts +3 -0
  174. package/build/NotificationChannelGroupManager.kepler.d.ts.map +1 -0
  175. package/build/NotificationChannelGroupManager.kepler.js +9 -0
  176. package/build/NotificationChannelGroupManager.kepler.js.map +1 -0
  177. package/build/NotificationChannelGroupManager.native.d.ts +4 -0
  178. package/build/NotificationChannelGroupManager.native.d.ts.map +1 -0
  179. package/build/NotificationChannelGroupManager.native.js +3 -0
  180. package/build/NotificationChannelGroupManager.native.js.map +1 -0
  181. package/build/NotificationChannelGroupManager.types.d.ts +28 -0
  182. package/build/NotificationChannelGroupManager.types.d.ts.map +1 -0
  183. package/build/NotificationChannelGroupManager.types.js +2 -0
  184. package/build/NotificationChannelGroupManager.types.js.map +1 -0
  185. package/build/NotificationChannelManager.d.ts +4 -0
  186. package/build/NotificationChannelManager.d.ts.map +1 -0
  187. package/build/NotificationChannelManager.js +5 -0
  188. package/build/NotificationChannelManager.js.map +1 -0
  189. package/build/NotificationChannelManager.kepler.d.ts +3 -0
  190. package/build/NotificationChannelManager.kepler.d.ts.map +1 -0
  191. package/build/NotificationChannelManager.kepler.js +9 -0
  192. package/build/NotificationChannelManager.kepler.js.map +1 -0
  193. package/build/NotificationChannelManager.native.d.ts +4 -0
  194. package/build/NotificationChannelManager.native.d.ts.map +1 -0
  195. package/build/NotificationChannelManager.native.js +3 -0
  196. package/build/NotificationChannelManager.native.js.map +1 -0
  197. package/build/NotificationChannelManager.types.d.ts +91 -0
  198. package/build/NotificationChannelManager.types.d.ts.map +1 -0
  199. package/build/NotificationChannelManager.types.js +53 -0
  200. package/build/NotificationChannelManager.types.js.map +1 -0
  201. package/build/NotificationPermissions.d.ts +56 -0
  202. package/build/NotificationPermissions.d.ts.map +1 -0
  203. package/build/NotificationPermissions.js +79 -0
  204. package/build/NotificationPermissions.js.map +1 -0
  205. package/build/NotificationPermissions.types.d.ts +94 -0
  206. package/build/NotificationPermissions.types.d.ts.map +1 -0
  207. package/build/NotificationPermissions.types.js +21 -0
  208. package/build/NotificationPermissions.types.js.map +1 -0
  209. package/build/NotificationPermissionsModule.d.ts +4 -0
  210. package/build/NotificationPermissionsModule.d.ts.map +1 -0
  211. package/build/NotificationPermissionsModule.js +67 -0
  212. package/build/NotificationPermissionsModule.js.map +1 -0
  213. package/build/NotificationPermissionsModule.kepler.d.ts +3 -0
  214. package/build/NotificationPermissionsModule.kepler.d.ts.map +1 -0
  215. package/build/NotificationPermissionsModule.kepler.js +9 -0
  216. package/build/NotificationPermissionsModule.kepler.js.map +1 -0
  217. package/build/NotificationPermissionsModule.native.d.ts +4 -0
  218. package/build/NotificationPermissionsModule.native.d.ts.map +1 -0
  219. package/build/NotificationPermissionsModule.native.js +3 -0
  220. package/build/NotificationPermissionsModule.native.js.map +1 -0
  221. package/build/NotificationPermissionsModule.types.d.ts +7 -0
  222. package/build/NotificationPermissionsModule.types.d.ts.map +1 -0
  223. package/build/NotificationPermissionsModule.types.js +2 -0
  224. package/build/NotificationPermissionsModule.types.js.map +1 -0
  225. package/build/NotificationPresenterModule.d.ts +4 -0
  226. package/build/NotificationPresenterModule.d.ts.map +1 -0
  227. package/build/NotificationPresenterModule.js +5 -0
  228. package/build/NotificationPresenterModule.js.map +1 -0
  229. package/build/NotificationPresenterModule.kepler.d.ts +4 -0
  230. package/build/NotificationPresenterModule.kepler.d.ts.map +1 -0
  231. package/build/NotificationPresenterModule.kepler.js +55 -0
  232. package/build/NotificationPresenterModule.kepler.js.map +1 -0
  233. package/build/NotificationPresenterModule.native.d.ts +4 -0
  234. package/build/NotificationPresenterModule.native.d.ts.map +1 -0
  235. package/build/NotificationPresenterModule.native.js +3 -0
  236. package/build/NotificationPresenterModule.native.js.map +1 -0
  237. package/build/NotificationPresenterModule.types.d.ts +9 -0
  238. package/build/NotificationPresenterModule.types.d.ts.map +1 -0
  239. package/build/NotificationPresenterModule.types.js +2 -0
  240. package/build/NotificationPresenterModule.types.js.map +1 -0
  241. package/build/NotificationScheduler.d.ts +4 -0
  242. package/build/NotificationScheduler.d.ts.map +1 -0
  243. package/build/NotificationScheduler.js +5 -0
  244. package/build/NotificationScheduler.js.map +1 -0
  245. package/build/NotificationScheduler.kepler.d.ts +4 -0
  246. package/build/NotificationScheduler.kepler.d.ts.map +1 -0
  247. package/build/NotificationScheduler.kepler.js +50 -0
  248. package/build/NotificationScheduler.kepler.js.map +1 -0
  249. package/build/NotificationScheduler.native.d.ts +4 -0
  250. package/build/NotificationScheduler.native.d.ts.map +1 -0
  251. package/build/NotificationScheduler.native.js +3 -0
  252. package/build/NotificationScheduler.native.js.map +1 -0
  253. package/build/NotificationScheduler.types.d.ts +65 -0
  254. package/build/NotificationScheduler.types.d.ts.map +1 -0
  255. package/build/NotificationScheduler.types.js +2 -0
  256. package/build/NotificationScheduler.types.js.map +1 -0
  257. package/build/Notifications.types.d.ts +666 -0
  258. package/build/Notifications.types.d.ts.map +1 -0
  259. package/build/Notifications.types.js +12 -0
  260. package/build/Notifications.types.js.map +1 -0
  261. package/build/NotificationsEmitter.d.ts +75 -0
  262. package/build/NotificationsEmitter.d.ts.map +1 -0
  263. package/build/NotificationsEmitter.js +95 -0
  264. package/build/NotificationsEmitter.js.map +1 -0
  265. package/build/NotificationsEmitterModule.d.ts +4 -0
  266. package/build/NotificationsEmitterModule.d.ts.map +1 -0
  267. package/build/NotificationsEmitterModule.js +12 -0
  268. package/build/NotificationsEmitterModule.js.map +1 -0
  269. package/build/NotificationsEmitterModule.kepler.d.ts +3 -0
  270. package/build/NotificationsEmitterModule.kepler.d.ts.map +1 -0
  271. package/build/NotificationsEmitterModule.kepler.js +9 -0
  272. package/build/NotificationsEmitterModule.kepler.js.map +1 -0
  273. package/build/NotificationsEmitterModule.native.d.ts +4 -0
  274. package/build/NotificationsEmitterModule.native.d.ts.map +1 -0
  275. package/build/NotificationsEmitterModule.native.js +3 -0
  276. package/build/NotificationsEmitterModule.native.js.map +1 -0
  277. package/build/NotificationsEmitterModule.types.d.ts +6 -0
  278. package/build/NotificationsEmitterModule.types.d.ts.map +1 -0
  279. package/build/NotificationsEmitterModule.types.js +2 -0
  280. package/build/NotificationsEmitterModule.types.js.map +1 -0
  281. package/build/NotificationsHandler.d.ts +60 -0
  282. package/build/NotificationsHandler.d.ts.map +1 -0
  283. package/build/NotificationsHandler.js +72 -0
  284. package/build/NotificationsHandler.js.map +1 -0
  285. package/build/NotificationsHandlerModule.d.ts +4 -0
  286. package/build/NotificationsHandlerModule.d.ts.map +1 -0
  287. package/build/NotificationsHandlerModule.js +12 -0
  288. package/build/NotificationsHandlerModule.js.map +1 -0
  289. package/build/NotificationsHandlerModule.kepler.d.ts +3 -0
  290. package/build/NotificationsHandlerModule.kepler.d.ts.map +1 -0
  291. package/build/NotificationsHandlerModule.kepler.js +9 -0
  292. package/build/NotificationsHandlerModule.kepler.js.map +1 -0
  293. package/build/NotificationsHandlerModule.native.d.ts +4 -0
  294. package/build/NotificationsHandlerModule.native.d.ts.map +1 -0
  295. package/build/NotificationsHandlerModule.native.js +3 -0
  296. package/build/NotificationsHandlerModule.native.js.map +1 -0
  297. package/build/NotificationsHandlerModule.types.d.ts +6 -0
  298. package/build/NotificationsHandlerModule.types.d.ts.map +1 -0
  299. package/build/NotificationsHandlerModule.types.js +2 -0
  300. package/build/NotificationsHandlerModule.types.js.map +1 -0
  301. package/build/PushTokenManager.d.ts +4 -0
  302. package/build/PushTokenManager.d.ts.map +1 -0
  303. package/build/PushTokenManager.js +12 -0
  304. package/build/PushTokenManager.js.map +1 -0
  305. package/build/PushTokenManager.kepler.d.ts +3 -0
  306. package/build/PushTokenManager.kepler.d.ts.map +1 -0
  307. package/build/PushTokenManager.kepler.js +9 -0
  308. package/build/PushTokenManager.kepler.js.map +1 -0
  309. package/build/PushTokenManager.native.d.ts +4 -0
  310. package/build/PushTokenManager.native.d.ts.map +1 -0
  311. package/build/PushTokenManager.native.js +3 -0
  312. package/build/PushTokenManager.native.js.map +1 -0
  313. package/build/PushTokenManager.types.d.ts +6 -0
  314. package/build/PushTokenManager.types.d.ts.map +1 -0
  315. package/build/PushTokenManager.types.js +2 -0
  316. package/build/PushTokenManager.types.js.map +1 -0
  317. package/build/ServerRegistrationModule.d.ts +4 -0
  318. package/build/ServerRegistrationModule.d.ts.map +1 -0
  319. package/build/ServerRegistrationModule.js +5 -0
  320. package/build/ServerRegistrationModule.js.map +1 -0
  321. package/build/ServerRegistrationModule.kepler.d.ts +3 -0
  322. package/build/ServerRegistrationModule.kepler.d.ts.map +1 -0
  323. package/build/ServerRegistrationModule.kepler.js +9 -0
  324. package/build/ServerRegistrationModule.kepler.js.map +1 -0
  325. package/build/ServerRegistrationModule.native.d.ts +4 -0
  326. package/build/ServerRegistrationModule.native.d.ts.map +1 -0
  327. package/build/ServerRegistrationModule.native.js +3 -0
  328. package/build/ServerRegistrationModule.native.js.map +1 -0
  329. package/build/ServerRegistrationModule.types.d.ts +7 -0
  330. package/build/ServerRegistrationModule.types.d.ts.map +1 -0
  331. package/build/ServerRegistrationModule.types.js +2 -0
  332. package/build/ServerRegistrationModule.types.js.map +1 -0
  333. package/build/ServerRegistrationModule.web.d.ts +4 -0
  334. package/build/ServerRegistrationModule.web.d.ts.map +1 -0
  335. package/build/ServerRegistrationModule.web.js +50 -0
  336. package/build/ServerRegistrationModule.web.js.map +1 -0
  337. package/build/TokenEmitter.d.ts +42 -0
  338. package/build/TokenEmitter.d.ts.map +1 -0
  339. package/build/TokenEmitter.js +44 -0
  340. package/build/TokenEmitter.js.map +1 -0
  341. package/build/Tokens.types.d.ts +99 -0
  342. package/build/Tokens.types.d.ts.map +1 -0
  343. package/build/Tokens.types.js +2 -0
  344. package/build/Tokens.types.js.map +1 -0
  345. package/build/cancelAllScheduledNotificationsAsync.d.ts +7 -0
  346. package/build/cancelAllScheduledNotificationsAsync.d.ts.map +1 -0
  347. package/build/cancelAllScheduledNotificationsAsync.js +14 -0
  348. package/build/cancelAllScheduledNotificationsAsync.js.map +1 -0
  349. package/build/cancelScheduledNotificationAsync.d.ts +22 -0
  350. package/build/cancelScheduledNotificationAsync.d.ts.map +1 -0
  351. package/build/cancelScheduledNotificationAsync.js +29 -0
  352. package/build/cancelScheduledNotificationAsync.js.map +1 -0
  353. package/build/deleteNotificationCategoryAsync.d.ts +11 -0
  354. package/build/deleteNotificationCategoryAsync.d.ts.map +1 -0
  355. package/build/deleteNotificationCategoryAsync.js +19 -0
  356. package/build/deleteNotificationCategoryAsync.js.map +1 -0
  357. package/build/deleteNotificationChannelAsync.android.d.ts +2 -0
  358. package/build/deleteNotificationChannelAsync.android.d.ts.map +1 -0
  359. package/build/deleteNotificationChannelAsync.android.js +9 -0
  360. package/build/deleteNotificationChannelAsync.android.js.map +1 -0
  361. package/build/deleteNotificationChannelAsync.d.ts +9 -0
  362. package/build/deleteNotificationChannelAsync.d.ts.map +1 -0
  363. package/build/deleteNotificationChannelAsync.js +11 -0
  364. package/build/deleteNotificationChannelAsync.js.map +1 -0
  365. package/build/deleteNotificationChannelGroupAsync.android.d.ts +2 -0
  366. package/build/deleteNotificationChannelGroupAsync.android.d.ts.map +1 -0
  367. package/build/deleteNotificationChannelGroupAsync.android.js +9 -0
  368. package/build/deleteNotificationChannelGroupAsync.android.js.map +1 -0
  369. package/build/deleteNotificationChannelGroupAsync.d.ts +9 -0
  370. package/build/deleteNotificationChannelGroupAsync.d.ts.map +1 -0
  371. package/build/deleteNotificationChannelGroupAsync.js +11 -0
  372. package/build/deleteNotificationChannelGroupAsync.js.map +1 -0
  373. package/build/dismissAllNotificationsAsync.d.ts +7 -0
  374. package/build/dismissAllNotificationsAsync.d.ts.map +1 -0
  375. package/build/dismissAllNotificationsAsync.js +14 -0
  376. package/build/dismissAllNotificationsAsync.js.map +1 -0
  377. package/build/dismissNotificationAsync.d.ts +8 -0
  378. package/build/dismissNotificationAsync.d.ts.map +1 -0
  379. package/build/dismissNotificationAsync.js +15 -0
  380. package/build/dismissNotificationAsync.js.map +1 -0
  381. package/build/getAllScheduledNotificationsAsync.d.ts +8 -0
  382. package/build/getAllScheduledNotificationsAsync.d.ts.map +1 -0
  383. package/build/getAllScheduledNotificationsAsync.js +14 -0
  384. package/build/getAllScheduledNotificationsAsync.js.map +1 -0
  385. package/build/getBadgeCountAsync.d.ts +8 -0
  386. package/build/getBadgeCountAsync.d.ts.map +1 -0
  387. package/build/getBadgeCountAsync.js +15 -0
  388. package/build/getBadgeCountAsync.js.map +1 -0
  389. package/build/getDevicePushTokenAsync.d.ts +8 -0
  390. package/build/getDevicePushTokenAsync.d.ts.map +1 -0
  391. package/build/getDevicePushTokenAsync.js +27 -0
  392. package/build/getDevicePushTokenAsync.js.map +1 -0
  393. package/build/getDevicePushTokenAsync.web.d.ts +3 -0
  394. package/build/getDevicePushTokenAsync.web.d.ts.map +1 -0
  395. package/build/getDevicePushTokenAsync.web.js +84 -0
  396. package/build/getDevicePushTokenAsync.web.js.map +1 -0
  397. package/build/getExpoPushTokenAsync.d.ts +40 -0
  398. package/build/getExpoPushTokenAsync.d.ts.map +1 -0
  399. package/build/getExpoPushTokenAsync.js +177 -0
  400. package/build/getExpoPushTokenAsync.js.map +1 -0
  401. package/build/getNextTriggerDateAsync.d.ts +26 -0
  402. package/build/getNextTriggerDateAsync.d.ts.map +1 -0
  403. package/build/getNextTriggerDateAsync.js +33 -0
  404. package/build/getNextTriggerDateAsync.js.map +1 -0
  405. package/build/getNotificationCategoriesAsync.d.ts +11 -0
  406. package/build/getNotificationCategoriesAsync.d.ts.map +1 -0
  407. package/build/getNotificationCategoriesAsync.js +18 -0
  408. package/build/getNotificationCategoriesAsync.js.map +1 -0
  409. package/build/getNotificationChannelAsync.android.d.ts +3 -0
  410. package/build/getNotificationChannelAsync.android.d.ts.map +1 -0
  411. package/build/getNotificationChannelAsync.android.js +9 -0
  412. package/build/getNotificationChannelAsync.android.js.map +1 -0
  413. package/build/getNotificationChannelAsync.d.ts +11 -0
  414. package/build/getNotificationChannelAsync.d.ts.map +1 -0
  415. package/build/getNotificationChannelAsync.js +13 -0
  416. package/build/getNotificationChannelAsync.js.map +1 -0
  417. package/build/getNotificationChannelGroupAsync.android.d.ts +3 -0
  418. package/build/getNotificationChannelGroupAsync.android.d.ts.map +1 -0
  419. package/build/getNotificationChannelGroupAsync.android.js +9 -0
  420. package/build/getNotificationChannelGroupAsync.android.js.map +1 -0
  421. package/build/getNotificationChannelGroupAsync.d.ts +12 -0
  422. package/build/getNotificationChannelGroupAsync.d.ts.map +1 -0
  423. package/build/getNotificationChannelGroupAsync.js +14 -0
  424. package/build/getNotificationChannelGroupAsync.js.map +1 -0
  425. package/build/getNotificationChannelGroupsAsync.android.d.ts +3 -0
  426. package/build/getNotificationChannelGroupsAsync.android.d.ts.map +1 -0
  427. package/build/getNotificationChannelGroupsAsync.android.js +9 -0
  428. package/build/getNotificationChannelGroupsAsync.android.js.map +1 -0
  429. package/build/getNotificationChannelGroupsAsync.d.ts +10 -0
  430. package/build/getNotificationChannelGroupsAsync.d.ts.map +1 -0
  431. package/build/getNotificationChannelGroupsAsync.js +12 -0
  432. package/build/getNotificationChannelGroupsAsync.js.map +1 -0
  433. package/build/getNotificationChannelsAsync.android.d.ts +3 -0
  434. package/build/getNotificationChannelsAsync.android.d.ts.map +1 -0
  435. package/build/getNotificationChannelsAsync.android.js +9 -0
  436. package/build/getNotificationChannelsAsync.android.js.map +1 -0
  437. package/build/getNotificationChannelsAsync.d.ts +10 -0
  438. package/build/getNotificationChannelsAsync.d.ts.map +1 -0
  439. package/build/getNotificationChannelsAsync.js +12 -0
  440. package/build/getNotificationChannelsAsync.js.map +1 -0
  441. package/build/getPresentedNotificationsAsync.d.ts +9 -0
  442. package/build/getPresentedNotificationsAsync.d.ts.map +1 -0
  443. package/build/getPresentedNotificationsAsync.js +15 -0
  444. package/build/getPresentedNotificationsAsync.js.map +1 -0
  445. package/build/index.d.ts +39 -0
  446. package/build/index.d.ts.map +1 -0
  447. package/build/index.js +39 -0
  448. package/build/index.js.map +1 -0
  449. package/build/kepler/NotificationContent.d.ts +43 -0
  450. package/build/kepler/NotificationContent.d.ts.map +1 -0
  451. package/build/kepler/NotificationContent.js +96 -0
  452. package/build/kepler/NotificationContent.js.map +1 -0
  453. package/build/kepler/index.d.ts +3 -0
  454. package/build/kepler/index.d.ts.map +1 -0
  455. package/build/kepler/index.js +15 -0
  456. package/build/kepler/index.js.map +1 -0
  457. package/build/kepler/native-notification-manager.d.ts +3 -0
  458. package/build/kepler/native-notification-manager.d.ts.map +1 -0
  459. package/build/kepler/native-notification-manager.js +10 -0
  460. package/build/kepler/native-notification-manager.js.map +1 -0
  461. package/build/kepler/types/NotificationManagerTypes.d.ts +373 -0
  462. package/build/kepler/types/NotificationManagerTypes.d.ts.map +1 -0
  463. package/build/kepler/types/NotificationManagerTypes.js +279 -0
  464. package/build/kepler/types/NotificationManagerTypes.js.map +1 -0
  465. package/build/kepler/types/index.d.ts +3 -0
  466. package/build/kepler/types/index.d.ts.map +1 -0
  467. package/build/kepler/types/index.js +15 -0
  468. package/build/kepler/types/index.js.map +1 -0
  469. package/build/presentNotificationAsync.d.ts +11 -0
  470. package/build/presentNotificationAsync.d.ts.map +1 -0
  471. package/build/presentNotificationAsync.js +22 -0
  472. package/build/presentNotificationAsync.js.map +1 -0
  473. package/build/registerTaskAsync.d.ts +29 -0
  474. package/build/registerTaskAsync.d.ts.map +1 -0
  475. package/build/registerTaskAsync.js +37 -0
  476. package/build/registerTaskAsync.js.map +1 -0
  477. package/build/scheduleNotificationAsync.d.ts +60 -0
  478. package/build/scheduleNotificationAsync.d.ts.map +1 -0
  479. package/build/scheduleNotificationAsync.js +261 -0
  480. package/build/scheduleNotificationAsync.js.map +1 -0
  481. package/build/setBadgeCountAsync.d.ts +19 -0
  482. package/build/setBadgeCountAsync.d.ts.map +1 -0
  483. package/build/setBadgeCountAsync.js +19 -0
  484. package/build/setBadgeCountAsync.js.map +1 -0
  485. package/build/setNotificationCategoryAsync.d.ts +15 -0
  486. package/build/setNotificationCategoryAsync.d.ts.map +1 -0
  487. package/build/setNotificationCategoryAsync.js +22 -0
  488. package/build/setNotificationCategoryAsync.js.map +1 -0
  489. package/build/setNotificationChannelAsync.android.d.ts +3 -0
  490. package/build/setNotificationChannelAsync.android.d.ts.map +1 -0
  491. package/build/setNotificationChannelAsync.android.js +9 -0
  492. package/build/setNotificationChannelAsync.android.js.map +1 -0
  493. package/build/setNotificationChannelAsync.d.ts +22 -0
  494. package/build/setNotificationChannelAsync.d.ts.map +1 -0
  495. package/build/setNotificationChannelAsync.js +24 -0
  496. package/build/setNotificationChannelAsync.js.map +1 -0
  497. package/build/setNotificationChannelGroupAsync.android.d.ts +3 -0
  498. package/build/setNotificationChannelGroupAsync.android.d.ts.map +1 -0
  499. package/build/setNotificationChannelGroupAsync.android.js +9 -0
  500. package/build/setNotificationChannelGroupAsync.android.js.map +1 -0
  501. package/build/setNotificationChannelGroupAsync.d.ts +12 -0
  502. package/build/setNotificationChannelGroupAsync.d.ts.map +1 -0
  503. package/build/setNotificationChannelGroupAsync.js +14 -0
  504. package/build/setNotificationChannelGroupAsync.js.map +1 -0
  505. package/build/unregisterForNotificationsAsync.d.ts +2 -0
  506. package/build/unregisterForNotificationsAsync.d.ts.map +1 -0
  507. package/build/unregisterForNotificationsAsync.js +10 -0
  508. package/build/unregisterForNotificationsAsync.js.map +1 -0
  509. package/build/unregisterTaskAsync.d.ts +7 -0
  510. package/build/unregisterTaskAsync.d.ts.map +1 -0
  511. package/build/unregisterTaskAsync.js +15 -0
  512. package/build/unregisterTaskAsync.js.map +1 -0
  513. package/build/useLastNotificationResponse.d.ts +38 -0
  514. package/build/useLastNotificationResponse.d.ts.map +1 -0
  515. package/build/useLastNotificationResponse.js +63 -0
  516. package/build/useLastNotificationResponse.js.map +1 -0
  517. package/build/utils/keplerUuidUtils.d.ts +5 -0
  518. package/build/utils/keplerUuidUtils.d.ts.map +1 -0
  519. package/build/utils/keplerUuidUtils.js +15 -0
  520. package/build/utils/keplerUuidUtils.js.map +1 -0
  521. package/build/utils/updateDevicePushTokenAsync.d.ts +3 -0
  522. package/build/utils/updateDevicePushTokenAsync.d.ts.map +1 -0
  523. package/build/utils/updateDevicePushTokenAsync.js +115 -0
  524. package/build/utils/updateDevicePushTokenAsync.js.map +1 -0
  525. package/expo-module.config.json +20 -0
  526. package/ios/EXNotifications/Building/EXNotificationBuilder.h +19 -0
  527. package/ios/EXNotifications/Building/EXNotificationBuilder.m +91 -0
  528. package/ios/EXNotifications/EXBadgeModule.h +11 -0
  529. package/ios/EXNotifications/EXBadgeModule.m +36 -0
  530. package/ios/EXNotifications/EXServerRegistrationModule.h +19 -0
  531. package/ios/EXNotifications/EXServerRegistrationModule.m +194 -0
  532. package/ios/EXNotifications/Notifications/Background/EXBackgroundNotificationTasksModule.h +16 -0
  533. package/ios/EXNotifications/Notifications/Background/EXBackgroundNotificationTasksModule.m +62 -0
  534. package/ios/EXNotifications/Notifications/Background/EXBackgroundRemoteNotificationConsumer.h +14 -0
  535. package/ios/EXNotifications/Notifications/Background/EXBackgroundRemoteNotificationConsumer.m +51 -0
  536. package/ios/EXNotifications/Notifications/Categories/EXNotificationCategoriesModule.h +25 -0
  537. package/ios/EXNotifications/Notifications/Categories/EXNotificationCategoriesModule.m +217 -0
  538. package/ios/EXNotifications/Notifications/EXNotificationCenterDelegate.h +29 -0
  539. package/ios/EXNotifications/Notifications/EXNotificationCenterDelegate.m +209 -0
  540. package/ios/EXNotifications/Notifications/EXNotificationSerializer.h +16 -0
  541. package/ios/EXNotifications/Notifications/EXNotificationSerializer.m +232 -0
  542. package/ios/EXNotifications/Notifications/EXNotificationsDelegate.h +27 -0
  543. package/ios/EXNotifications/Notifications/Emitter/EXNotificationsEmitter.h +17 -0
  544. package/ios/EXNotifications/Notifications/Emitter/EXNotificationsEmitter.m +114 -0
  545. package/ios/EXNotifications/Notifications/Handler/EXNotificationsHandlerModule.h +12 -0
  546. package/ios/EXNotifications/Notifications/Handler/EXNotificationsHandlerModule.m +109 -0
  547. package/ios/EXNotifications/Notifications/Handler/EXSingleNotificationHandlerTask.h +33 -0
  548. package/ios/EXNotifications/Notifications/Handler/EXSingleNotificationHandlerTask.m +124 -0
  549. package/ios/EXNotifications/Notifications/NSDictionary+EXNotificationsVerifyingClass.h +7 -0
  550. package/ios/EXNotifications/Notifications/NSDictionary+EXNotificationsVerifyingClass.m +19 -0
  551. package/ios/EXNotifications/Notifications/Presenting/EXNotificationPresentationModule.h +13 -0
  552. package/ios/EXNotifications/Notifications/Presenting/EXNotificationPresentationModule.m +124 -0
  553. package/ios/EXNotifications/Notifications/Scheduling/EXNotificationSchedulerModule.h +21 -0
  554. package/ios/EXNotifications/Notifications/Scheduling/EXNotificationSchedulerModule.m +263 -0
  555. package/ios/EXNotifications/Permissions/EXLegacyRemoteNotificationPermissionRequester.h +13 -0
  556. package/ios/EXNotifications/Permissions/EXLegacyRemoteNotificationPermissionRequester.m +135 -0
  557. package/ios/EXNotifications/Permissions/EXNotificationPermissionsModule.h +8 -0
  558. package/ios/EXNotifications/Permissions/EXNotificationPermissionsModule.m +67 -0
  559. package/ios/EXNotifications/Permissions/EXRemoteNotificationPermissionSingletonModule.h +29 -0
  560. package/ios/EXNotifications/Permissions/EXRemoteNotificationPermissionSingletonModule.m +68 -0
  561. package/ios/EXNotifications/Permissions/EXUserFacingNotificationsPermissionsRequester.h +15 -0
  562. package/ios/EXNotifications/Permissions/EXUserFacingNotificationsPermissionsRequester.m +202 -0
  563. package/ios/EXNotifications/PushToken/EXPushTokenListener.h +14 -0
  564. package/ios/EXNotifications/PushToken/EXPushTokenManager.h +24 -0
  565. package/ios/EXNotifications/PushToken/EXPushTokenManager.m +63 -0
  566. package/ios/EXNotifications/PushToken/EXPushTokenModule.h +9 -0
  567. package/ios/EXNotifications/PushToken/EXPushTokenModule.m +154 -0
  568. package/ios/EXNotifications.podspec +25 -0
  569. package/package.json +67 -0
  570. package/plugin/build/withNotifications.d.ts +28 -0
  571. package/plugin/build/withNotifications.js +12 -0
  572. package/plugin/build/withNotificationsAndroid.d.ts +42 -0
  573. package/plugin/build/withNotificationsAndroid.js +184 -0
  574. package/plugin/build/withNotificationsIOS.d.ts +14 -0
  575. package/plugin/build/withNotificationsIOS.js +58 -0
  576. package/plugin/jest.config.js +1 -0
  577. package/plugin/src/withNotifications.ts +40 -0
  578. package/plugin/src/withNotificationsAndroid.ts +239 -0
  579. package/plugin/src/withNotificationsIOS.ts +78 -0
  580. package/plugin/tsconfig.json +9 -0
  581. package/src/BackgroundNotificationTasksModule.kepler.ts +8 -0
  582. package/src/BackgroundNotificationTasksModule.native.ts +7 -0
  583. package/src/BackgroundNotificationTasksModule.ts +8 -0
  584. package/src/BackgroundNotificationTasksModule.types.ts +12 -0
  585. package/src/BackgroundNotificationTasksModule.web.ts +8 -0
  586. package/src/BadgeModule.kepler.ts +8 -0
  587. package/src/BadgeModule.native.ts +15 -0
  588. package/src/BadgeModule.ts +6 -0
  589. package/src/BadgeModule.types.ts +11 -0
  590. package/src/BadgeModule.web.ts +28 -0
  591. package/src/DevicePushTokenAutoRegistration.fx.ts +119 -0
  592. package/src/NotificationCategoriesModule.kepler.ts +10 -0
  593. package/src/NotificationCategoriesModule.native.ts +7 -0
  594. package/src/NotificationCategoriesModule.ts +15 -0
  595. package/src/NotificationCategoriesModule.types.ts +22 -0
  596. package/src/NotificationCategoriesModule.web.ts +17 -0
  597. package/src/NotificationChannelGroupManager.kepler.ts +8 -0
  598. package/src/NotificationChannelGroupManager.native.ts +7 -0
  599. package/src/NotificationChannelGroupManager.ts +6 -0
  600. package/src/NotificationChannelGroupManager.types.ts +34 -0
  601. package/src/NotificationChannelManager.kepler.ts +8 -0
  602. package/src/NotificationChannelManager.native.ts +5 -0
  603. package/src/NotificationChannelManager.ts +6 -0
  604. package/src/NotificationChannelManager.types.ts +115 -0
  605. package/src/NotificationPermissions.ts +91 -0
  606. package/src/NotificationPermissions.types.ts +102 -0
  607. package/src/NotificationPermissionsModule.kepler.ts +8 -0
  608. package/src/NotificationPermissionsModule.native.ts +7 -0
  609. package/src/NotificationPermissionsModule.ts +83 -0
  610. package/src/NotificationPermissionsModule.types.ts +13 -0
  611. package/src/NotificationPresenterModule.kepler.ts +67 -0
  612. package/src/NotificationPresenterModule.native.ts +5 -0
  613. package/src/NotificationPresenterModule.ts +6 -0
  614. package/src/NotificationPresenterModule.types.ts +13 -0
  615. package/src/NotificationScheduler.kepler.ts +63 -0
  616. package/src/NotificationScheduler.native.ts +5 -0
  617. package/src/NotificationScheduler.ts +6 -0
  618. package/src/NotificationScheduler.types.ts +89 -0
  619. package/src/Notifications.types.ts +722 -0
  620. package/src/NotificationsEmitter.ts +111 -0
  621. package/src/NotificationsEmitterModule.kepler.ts +8 -0
  622. package/src/NotificationsEmitterModule.native.ts +5 -0
  623. package/src/NotificationsEmitterModule.ts +17 -0
  624. package/src/NotificationsEmitterModule.types.ts +7 -0
  625. package/src/NotificationsHandler.ts +120 -0
  626. package/src/NotificationsHandlerModule.kepler.ts +8 -0
  627. package/src/NotificationsHandlerModule.native.ts +5 -0
  628. package/src/NotificationsHandlerModule.ts +17 -0
  629. package/src/NotificationsHandlerModule.types.ts +10 -0
  630. package/src/PushTokenManager.kepler.ts +8 -0
  631. package/src/PushTokenManager.native.ts +5 -0
  632. package/src/PushTokenManager.ts +17 -0
  633. package/src/PushTokenManager.types.ts +6 -0
  634. package/src/ServerRegistrationModule.kepler.ts +8 -0
  635. package/src/ServerRegistrationModule.native.ts +7 -0
  636. package/src/ServerRegistrationModule.ts +6 -0
  637. package/src/ServerRegistrationModule.types.ts +7 -0
  638. package/src/ServerRegistrationModule.web.ts +56 -0
  639. package/src/TokenEmitter.ts +56 -0
  640. package/src/Tokens.types.ts +110 -0
  641. package/src/cancelAllScheduledNotificationsAsync.ts +16 -0
  642. package/src/cancelScheduledNotificationAsync.ts +31 -0
  643. package/src/deleteNotificationCategoryAsync.ts +23 -0
  644. package/src/deleteNotificationChannelAsync.android.ts +11 -0
  645. package/src/deleteNotificationChannelAsync.ts +10 -0
  646. package/src/deleteNotificationChannelGroupAsync.android.ts +11 -0
  647. package/src/deleteNotificationChannelGroupAsync.ts +10 -0
  648. package/src/dismissAllNotificationsAsync.ts +16 -0
  649. package/src/dismissNotificationAsync.ts +19 -0
  650. package/src/getAllScheduledNotificationsAsync.ts +17 -0
  651. package/src/getBadgeCountAsync.ts +17 -0
  652. package/src/getDevicePushTokenAsync.ts +31 -0
  653. package/src/getDevicePushTokenAsync.web.ts +122 -0
  654. package/src/getExpoPushTokenAsync.ts +238 -0
  655. package/src/getNextTriggerDateAsync.ts +38 -0
  656. package/src/getNotificationCategoriesAsync.ts +21 -0
  657. package/src/getNotificationChannelAsync.android.ts +13 -0
  658. package/src/getNotificationChannelAsync.ts +16 -0
  659. package/src/getNotificationChannelGroupAsync.android.ts +14 -0
  660. package/src/getNotificationChannelGroupAsync.ts +17 -0
  661. package/src/getNotificationChannelGroupsAsync.android.ts +13 -0
  662. package/src/getNotificationChannelGroupsAsync.ts +15 -0
  663. package/src/getNotificationChannelsAsync.android.ts +11 -0
  664. package/src/getNotificationChannelsAsync.ts +13 -0
  665. package/src/getPresentedNotificationsAsync.ts +18 -0
  666. package/src/index.ts +38 -0
  667. package/src/kepler/NotificationContent.ts +119 -0
  668. package/src/kepler/index.ts +16 -0
  669. package/src/kepler/native-notification-manager.ts +10 -0
  670. package/src/kepler/types/NotificationManagerTypes.ts +508 -0
  671. package/src/kepler/types/index.ts +16 -0
  672. package/src/presentNotificationAsync.ts +32 -0
  673. package/src/registerTaskAsync.ts +39 -0
  674. package/src/scheduleNotificationAsync.ts +335 -0
  675. package/src/setBadgeCountAsync.ts +32 -0
  676. package/src/setNotificationCategoryAsync.ts +37 -0
  677. package/src/setNotificationChannelAsync.android.ts +15 -0
  678. package/src/setNotificationChannelAsync.ts +28 -0
  679. package/src/setNotificationChannelGroupAsync.android.ts +18 -0
  680. package/src/setNotificationChannelGroupAsync.ts +21 -0
  681. package/src/unregisterForNotificationsAsync.ts +11 -0
  682. package/src/unregisterTaskAsync.ts +17 -0
  683. package/src/useLastNotificationResponse.ts +70 -0
  684. package/src/utils/keplerUuidUtils.ts +29 -0
  685. package/src/utils/updateDevicePushTokenAsync.ts +147 -0
  686. package/tsconfig.json +9 -0
@@ -0,0 +1,335 @@
1
+ import * as Crypto from '@amazon-devices/expo-crypto';
2
+ import { Platform, UnavailabilityError } from 'expo-modules-core';
3
+
4
+ import NotificationScheduler from './NotificationScheduler';
5
+ import { NotificationTriggerInput as NativeNotificationTriggerInput } from './NotificationScheduler.types';
6
+ import {
7
+ NotificationRequestInput,
8
+ NotificationTriggerInput,
9
+ DailyTriggerInput,
10
+ WeeklyTriggerInput,
11
+ YearlyTriggerInput,
12
+ CalendarTriggerInput,
13
+ TimeIntervalTriggerInput,
14
+ DateTriggerInput,
15
+ ChannelAwareTriggerInput,
16
+ SchedulableNotificationTriggerInput,
17
+ } from './Notifications.types';
18
+
19
+ /**
20
+ * Schedules a notification to be triggered in the future.
21
+ * > **Note:** Please note that this does not mean that the notification will be presented when it is triggered.
22
+ * For the notification to be presented you have to set a notification handler with [`setNotificationHandler`](#notificationssetnotificationhandlerhandler)
23
+ * that will return an appropriate notification behavior. For more information see the example below.
24
+ * @param request An object describing the notification to be triggered.
25
+ * @return Returns a Promise resolving to a string which is a notification identifier you can later use to cancel the notification or to identify an incoming notification.
26
+ * @example
27
+ * # Schedule the notification that will trigger once, in one minute from now
28
+ * ```ts
29
+ * import * as Notifications from '@amazon-devices/expo-notifications';
30
+ *
31
+ * Notifications.scheduleNotificationAsync({
32
+ * content: {
33
+ * title: "Time's up!",
34
+ * body: 'Change sides!',
35
+ * },
36
+ * trigger: {
37
+ * seconds: 60,
38
+ * },
39
+ * });
40
+ * ```
41
+ *
42
+ * # Schedule the notification that will trigger repeatedly, every 20 minutes
43
+ * ```ts
44
+ * import * as Notifications from '@amazon-devices/expo-notifications';
45
+ *
46
+ * Notifications.scheduleNotificationAsync({
47
+ * content: {
48
+ * title: 'Remember to drink water!',
49
+ * },
50
+ * trigger: {
51
+ * seconds: 60 * 20,
52
+ * repeats: true,
53
+ * },
54
+ * });
55
+ * ```
56
+ *
57
+ * # Schedule the notification that will trigger once, at the beginning of next hour
58
+ * ```ts
59
+ * import * as Notifications from '@amazon-devices/expo-notifications';
60
+ *
61
+ * const trigger = new Date(Date.now() + 60 * 60 * 1000);
62
+ * trigger.setMinutes(0);
63
+ * trigger.setSeconds(0);
64
+ *
65
+ * Notifications.scheduleNotificationAsync({
66
+ * content: {
67
+ * title: 'Happy new hour!',
68
+ * },
69
+ * trigger,
70
+ * });
71
+ * ```
72
+ * @header schedule
73
+ */
74
+ export default async function scheduleNotificationAsync(
75
+ request: NotificationRequestInput
76
+ ): Promise<string> {
77
+ if (!NotificationScheduler.scheduleNotificationAsync) {
78
+ throw new UnavailabilityError('Notifications', 'scheduleNotificationAsync');
79
+ }
80
+
81
+ return await NotificationScheduler.scheduleNotificationAsync(
82
+ request.identifier ?? Crypto.randomUUID(),
83
+ request.content,
84
+ parseTrigger(request.trigger)
85
+ );
86
+ }
87
+
88
+ type ValidTriggerDateComponents = 'month' | 'day' | 'weekday' | 'hour' | 'minute';
89
+
90
+ const DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS: readonly ValidTriggerDateComponents[] = [
91
+ 'hour',
92
+ 'minute',
93
+ ];
94
+ const WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS: readonly ValidTriggerDateComponents[] = [
95
+ 'weekday',
96
+ 'hour',
97
+ 'minute',
98
+ ];
99
+ const YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS: readonly ValidTriggerDateComponents[] = [
100
+ 'day',
101
+ 'month',
102
+ 'hour',
103
+ 'minute',
104
+ ];
105
+
106
+ export function parseTrigger(
107
+ userFacingTrigger: NotificationTriggerInput
108
+ ): NativeNotificationTriggerInput {
109
+ if (userFacingTrigger === null) {
110
+ return null;
111
+ }
112
+
113
+ if (userFacingTrigger === undefined) {
114
+ throw new TypeError(
115
+ 'Encountered an `undefined` notification trigger. If you want to trigger the notification immediately, pass in an explicit `null` value.'
116
+ );
117
+ }
118
+
119
+ if (isDateTrigger(userFacingTrigger)) {
120
+ return parseDateTrigger(userFacingTrigger);
121
+ } else if (isDailyTriggerInput(userFacingTrigger)) {
122
+ validateDateComponentsInTrigger(userFacingTrigger, DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS);
123
+ return {
124
+ type: 'daily',
125
+ channelId: userFacingTrigger.channelId,
126
+ hour: userFacingTrigger.hour,
127
+ minute: userFacingTrigger.minute,
128
+ };
129
+ } else if (isWeeklyTriggerInput(userFacingTrigger)) {
130
+ validateDateComponentsInTrigger(userFacingTrigger, WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS);
131
+ return {
132
+ type: 'weekly',
133
+ channelId: userFacingTrigger.channelId,
134
+ weekday: userFacingTrigger.weekday,
135
+ hour: userFacingTrigger.hour,
136
+ minute: userFacingTrigger.minute,
137
+ };
138
+ } else if (isYearlyTriggerInput(userFacingTrigger)) {
139
+ validateDateComponentsInTrigger(userFacingTrigger, YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS);
140
+ return {
141
+ type: 'yearly',
142
+ channelId: userFacingTrigger.channelId,
143
+ day: userFacingTrigger.day,
144
+ month: userFacingTrigger.month,
145
+ hour: userFacingTrigger.hour,
146
+ minute: userFacingTrigger.minute,
147
+ };
148
+ } else if (isSecondsPropertyMisusedInCalendarTriggerInput(userFacingTrigger)) {
149
+ throw new TypeError(
150
+ 'Could not have inferred the notification trigger type: if you want to use a time interval trigger, pass in only `seconds` with or without `repeats` property; if you want to use calendar-based trigger, pass in `second`.'
151
+ );
152
+ } else if ('seconds' in userFacingTrigger) {
153
+ return {
154
+ type: 'timeInterval',
155
+ channelId: userFacingTrigger.channelId,
156
+ seconds: userFacingTrigger.seconds,
157
+ repeats: userFacingTrigger.repeats ?? false,
158
+ };
159
+ } else if (isCalendarTrigger(userFacingTrigger)) {
160
+ const { repeats, ...calendarTrigger } = userFacingTrigger;
161
+ return { type: 'calendar', value: calendarTrigger, repeats };
162
+ } else {
163
+ return Platform.select({
164
+ default: null, // There's no notion of channels on platforms other than Android.
165
+ android: { type: 'channel', channelId: userFacingTrigger.channelId },
166
+ });
167
+ }
168
+ }
169
+
170
+ function isCalendarTrigger(
171
+ trigger: CalendarTriggerInput | ChannelAwareTriggerInput
172
+ ): trigger is CalendarTriggerInput {
173
+ const { channelId, ...triggerWithoutChannelId } = trigger;
174
+ return Object.keys(triggerWithoutChannelId).length > 0;
175
+ }
176
+
177
+ function isDateTrigger(
178
+ trigger:
179
+ | DateTriggerInput
180
+ | WeeklyTriggerInput
181
+ | DailyTriggerInput
182
+ | CalendarTriggerInput
183
+ | TimeIntervalTriggerInput
184
+ ): trigger is DateTriggerInput {
185
+ return (
186
+ trigger instanceof Date ||
187
+ typeof trigger === 'number' ||
188
+ (typeof trigger === 'object' && 'date' in trigger)
189
+ );
190
+ }
191
+
192
+ function parseDateTrigger(trigger: DateTriggerInput): NativeNotificationTriggerInput {
193
+ if (trigger instanceof Date || typeof trigger === 'number') {
194
+ return { type: 'date', timestamp: toTimestamp(trigger) };
195
+ }
196
+ return { type: 'date', timestamp: toTimestamp(trigger.date), channelId: trigger.channelId };
197
+ }
198
+
199
+ function toTimestamp(date: number | Date) {
200
+ if (date instanceof Date) {
201
+ return date.getTime();
202
+ }
203
+ return date;
204
+ }
205
+
206
+ function isDailyTriggerInput(
207
+ trigger: SchedulableNotificationTriggerInput
208
+ ): trigger is DailyTriggerInput {
209
+ if (typeof trigger !== 'object') return false;
210
+ const { channelId, ...triggerWithoutChannelId } = trigger as DailyTriggerInput;
211
+ return (
212
+ Object.keys(triggerWithoutChannelId).length ===
213
+ DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS.length + 1 &&
214
+ DAILY_TRIGGER_EXPECTED_DATE_COMPONENTS.every(
215
+ (component) => component in triggerWithoutChannelId
216
+ ) &&
217
+ 'repeats' in triggerWithoutChannelId &&
218
+ triggerWithoutChannelId.repeats === true
219
+ );
220
+ }
221
+
222
+ function isWeeklyTriggerInput(
223
+ trigger: SchedulableNotificationTriggerInput
224
+ ): trigger is WeeklyTriggerInput {
225
+ if (typeof trigger !== 'object') return false;
226
+ const { channelId, ...triggerWithoutChannelId } = trigger as WeeklyTriggerInput;
227
+ return (
228
+ Object.keys(triggerWithoutChannelId).length ===
229
+ WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS.length + 1 &&
230
+ WEEKLY_TRIGGER_EXPECTED_DATE_COMPONENTS.every(
231
+ (component) => component in triggerWithoutChannelId
232
+ ) &&
233
+ 'repeats' in triggerWithoutChannelId &&
234
+ triggerWithoutChannelId.repeats === true
235
+ );
236
+ }
237
+
238
+ function isYearlyTriggerInput(
239
+ trigger: SchedulableNotificationTriggerInput
240
+ ): trigger is YearlyTriggerInput {
241
+ if (typeof trigger !== 'object') return false;
242
+ const { channelId, ...triggerWithoutChannelId } = trigger as YearlyTriggerInput;
243
+ return (
244
+ Object.keys(triggerWithoutChannelId).length ===
245
+ YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS.length + 1 &&
246
+ YEARLY_TRIGGER_EXPECTED_DATE_COMPONENTS.every(
247
+ (component) => component in triggerWithoutChannelId
248
+ ) &&
249
+ 'repeats' in triggerWithoutChannelId &&
250
+ triggerWithoutChannelId.repeats === true
251
+ );
252
+ }
253
+
254
+ function isSecondsPropertyMisusedInCalendarTriggerInput(
255
+ trigger: TimeIntervalTriggerInput | CalendarTriggerInput
256
+ ) {
257
+ const { channelId, ...triggerWithoutChannelId } = trigger;
258
+ return (
259
+ // eg. { seconds: ..., repeats: ..., hour: ... }
260
+ ('seconds' in triggerWithoutChannelId &&
261
+ 'repeats' in triggerWithoutChannelId &&
262
+ Object.keys(triggerWithoutChannelId).length > 2) ||
263
+ // eg. { seconds: ..., hour: ... }
264
+ ('seconds' in triggerWithoutChannelId &&
265
+ !('repeats' in triggerWithoutChannelId) &&
266
+ Object.keys(triggerWithoutChannelId).length > 1)
267
+ );
268
+ }
269
+
270
+ function validateDateComponentsInTrigger(
271
+ trigger: NonNullable<NotificationTriggerInput>,
272
+ components: readonly ValidTriggerDateComponents[]
273
+ ) {
274
+ const anyTriggerType = trigger as any;
275
+ components.forEach((component) => {
276
+ if (!(component in anyTriggerType)) {
277
+ throw new TypeError(`The ${component} parameter needs to be present`);
278
+ }
279
+ if (typeof anyTriggerType[component] !== 'number') {
280
+ throw new TypeError(`The ${component} parameter should be a number`);
281
+ }
282
+ switch (component) {
283
+ case 'month': {
284
+ const { month } = anyTriggerType;
285
+ if (month < 0 || month > 11) {
286
+ throw new RangeError(`The month parameter needs to be between 0 and 11. Found: ${month}`);
287
+ }
288
+ break;
289
+ }
290
+ case 'day': {
291
+ const { day, month } = anyTriggerType;
292
+ const daysInGivenMonth = daysInMonth(month);
293
+ if (day < 1 || day > daysInGivenMonth) {
294
+ throw new RangeError(
295
+ `The day parameter for month ${month} must be between 1 and ${daysInGivenMonth}. Found: ${day}`
296
+ );
297
+ }
298
+ break;
299
+ }
300
+ case 'weekday': {
301
+ const { weekday } = anyTriggerType;
302
+ if (weekday < 1 || weekday > 7) {
303
+ throw new RangeError(
304
+ `The weekday parameter needs to be between 1 and 7. Found: ${weekday}`
305
+ );
306
+ }
307
+ break;
308
+ }
309
+ case 'hour': {
310
+ const { hour } = anyTriggerType;
311
+ if (hour < 0 || hour > 23) {
312
+ throw new RangeError(`The hour parameter needs to be between 0 and 23. Found: ${hour}`);
313
+ }
314
+ break;
315
+ }
316
+ case 'minute': {
317
+ const { minute } = anyTriggerType;
318
+ if (minute < 0 || minute > 59) {
319
+ throw new RangeError(
320
+ `The minute parameter needs to be between 0 and 59. Found: ${minute}`
321
+ );
322
+ }
323
+ break;
324
+ }
325
+ }
326
+ });
327
+ }
328
+
329
+ /**
330
+ * Determines the number of days in the given month (or January if omitted).
331
+ * If year is specified, it will include leap year logic, else it will always assume a leap year
332
+ */
333
+ function daysInMonth(month: number = 0, year?: number) {
334
+ return new Date(year ?? 2000, month + 1, 0).getDate();
335
+ }
@@ -0,0 +1,32 @@
1
+ import { UnavailabilityError, Platform } from 'expo-modules-core';
2
+
3
+ import BadgeModule from './BadgeModule';
4
+ import { WebSetBadgeCountOptions } from './BadgeModule.types';
5
+
6
+ export interface SetBadgeCountOptions {
7
+ /**
8
+ * A configuration object described [in the `badgin` documentation](https://github.com/jaulz/badgin#options).
9
+ */
10
+ web?: WebSetBadgeCountOptions;
11
+ }
12
+
13
+ /**
14
+ * Sets the badge of the app's icon to the specified number. Setting it to `0` clears the badge. On iOS, this method requires that you have requested
15
+ * the user's permission for `allowBadge` via [`requestPermissionsAsync`](#notificationsrequestpermissionsasyncpermissions),
16
+ * otherwise it will automatically return `false`.
17
+ * > **Note:** Not all Android launchers support application badges. If the launcher does not support icon badges, the method will resolve to `false`.
18
+ * @param badgeCount The count which should appear on the badge. A value of `0` will clear the badge.
19
+ * @param options An object of options configuring behavior applied in Web environment.
20
+ * @return It returns a Promise resolving to a boolean representing whether the setting of the badge succeeded.
21
+ * @header badge
22
+ */
23
+ export default async function setBadgeCountAsync(
24
+ badgeCount: number,
25
+ options?: SetBadgeCountOptions
26
+ ): Promise<boolean> {
27
+ if (!BadgeModule.setBadgeCountAsync) {
28
+ throw new UnavailabilityError('ExpoNotifications', 'setBadgeCountAsync');
29
+ }
30
+
31
+ return await BadgeModule.setBadgeCountAsync(badgeCount, options?.[Platform.OS]);
32
+ }
@@ -0,0 +1,37 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ // @amznmod_react - Changed .native import to one without postfix
4
+ import NotificationCategoriesModule from './NotificationCategoriesModule';
5
+ import {
6
+ NotificationCategory,
7
+ NotificationAction,
8
+ NotificationCategoryOptions,
9
+ } from './Notifications.types';
10
+
11
+ /**
12
+ * Sets the new notification category.
13
+ * @param identifier A string to associate as the ID of this category. You will pass this string in as the `categoryIdentifier`
14
+ * in your [`NotificationContent`](#notificationcontent) to associate a notification with this category.
15
+ * > Don't use the characters `:` or `-` in your category identifier. If you do, categories might not work as expected.
16
+ * @param actions An array of [`NotificationAction`s](#notificationaction), which describe the actions associated with this category.
17
+ * @param options An optional object of additional configuration options for your category.
18
+ * @return A Promise which resolves to the category you just have created.
19
+ * @platform android
20
+ * @platform ios
21
+ * @header categories
22
+ */
23
+ export default async function setNotificationCategoryAsync(
24
+ identifier: string,
25
+ actions: NotificationAction[],
26
+ options?: NotificationCategoryOptions
27
+ ): Promise<NotificationCategory> {
28
+ if (!NotificationCategoriesModule.setNotificationCategoryAsync) {
29
+ throw new UnavailabilityError('Notifications', 'setNotificationCategoryAsync');
30
+ }
31
+
32
+ return await NotificationCategoriesModule.setNotificationCategoryAsync(
33
+ identifier,
34
+ actions,
35
+ options
36
+ );
37
+ }
@@ -0,0 +1,15 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationChannelManager from './NotificationChannelManager';
4
+ import { NotificationChannelInput, NotificationChannel } from './NotificationChannelManager.types';
5
+
6
+ export default async function setNotificationChannelAsync(
7
+ channelId: string,
8
+ channel: NotificationChannelInput
9
+ ): Promise<NotificationChannel | null> {
10
+ if (!NotificationChannelManager.setNotificationChannelAsync) {
11
+ throw new UnavailabilityError('Notifications', 'setNotificationChannelAsync');
12
+ }
13
+
14
+ return await NotificationChannelManager.setNotificationChannelAsync(channelId, channel);
15
+ }
@@ -0,0 +1,28 @@
1
+ import { NotificationChannel, NotificationChannelInput } from './NotificationChannelManager.types';
2
+
3
+ /**
4
+ * Assigns the channel configuration to a channel of a specified name (creating it if need be).
5
+ * This method lets you assign given notification channel to a notification channel group.
6
+ *
7
+ * > **Note:** For some settings to be applied on all Android versions, it may be necessary to duplicate the configuration across both
8
+ * > a single notification and its respective notification channel.
9
+ *
10
+ * For example, for a notification to play a custom sound on Android versions **below** 8.0,
11
+ * the custom notification sound has to be set on the notification (through the [`NotificationContentInput`](#notificationcontentinput)),
12
+ * and for the custom sound to play on Android versions **above** 8.0, the relevant notification channel must have the custom sound configured
13
+ * (through the [`NotificationChannelInput`](#notificationchannelinput)). For more information,
14
+ * see [Set custom notification sounds on Android](#set-custom-notification-sounds).
15
+ * @param channelId The channel identifier.
16
+ * @param channel Object representing the channel's configuration.
17
+ * @return A Promise which resolving to the object (of type [`NotificationChannel`](#notificationchannel)) describing the modified channel
18
+ * or to `null` if the platform does not support notification channels.
19
+ * @platform android
20
+ * @header channels
21
+ */
22
+ export default async function setNotificationChannelAsync(
23
+ channelId: string,
24
+ channel: NotificationChannelInput
25
+ ): Promise<NotificationChannel | null> {
26
+ console.debug('Notification channels feature is only supported on Android.');
27
+ return null;
28
+ }
@@ -0,0 +1,18 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationChannelGroupManager from './NotificationChannelGroupManager';
4
+ import {
5
+ NotificationChannelGroup,
6
+ NotificationChannelGroupInput,
7
+ } from './NotificationChannelGroupManager.types';
8
+
9
+ export default async function setNotificationChannelGroupAsync(
10
+ groupId: string,
11
+ group: NotificationChannelGroupInput
12
+ ): Promise<NotificationChannelGroup | null> {
13
+ if (!NotificationChannelGroupManager.setNotificationChannelGroupAsync) {
14
+ throw new UnavailabilityError('Notifications', 'setNotificationChannelGroupAsync');
15
+ }
16
+
17
+ return await NotificationChannelGroupManager.setNotificationChannelGroupAsync(groupId, group);
18
+ }
@@ -0,0 +1,21 @@
1
+ import {
2
+ NotificationChannelGroup,
3
+ NotificationChannelGroupInput,
4
+ } from './NotificationChannelGroupManager.types';
5
+
6
+ /**
7
+ * Assigns the channel group configuration to a channel group of a specified name (creating it if need be).
8
+ * @param groupId The channel group's identifier.
9
+ * @param group Object representing the channel group configuration.
10
+ * @return A `Promise` resolving to the object (of type [`NotificationChannelGroup`](#notificationchannelgroup))
11
+ * describing the modified channel group or to `null` if the platform does not support notification channels.
12
+ * @platform android
13
+ * @header channels
14
+ */
15
+ export default async function setNotificationChannelGroupAsync(
16
+ groupId: string,
17
+ group: NotificationChannelGroupInput
18
+ ): Promise<NotificationChannelGroup | null> {
19
+ console.debug('Notification channels feature is only supported on Android.');
20
+ return null;
21
+ }
@@ -0,0 +1,11 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import PushTokenManager from './PushTokenManager';
4
+
5
+ // @docsMissing
6
+ export default async function unregisterForNotificationsAsync(): Promise<void> {
7
+ if (!PushTokenManager.unregisterForNotificationsAsync) {
8
+ throw new UnavailabilityError('ExpoNotifications', 'unregisterForNotificationsAsync');
9
+ }
10
+ return PushTokenManager.unregisterForNotificationsAsync();
11
+ }
@@ -0,0 +1,17 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ // @amznmod_react - Changed .native import to one without postfix
4
+ import BackgroundNotificationTasksModule from './BackgroundNotificationTasksModule';
5
+
6
+ /**
7
+ * Used to unregister tasks registered with `registerTaskAsync` method.
8
+ * @param taskName The string you passed to `registerTaskAsync` as the `taskName` parameter.
9
+ * @header inBackground
10
+ */
11
+ export default async function unregisterTaskAsync(taskName: string): Promise<null> {
12
+ if (!BackgroundNotificationTasksModule.unregisterTaskAsync) {
13
+ throw new UnavailabilityError('Notifications', 'unregisterTaskAsync');
14
+ }
15
+
16
+ return await BackgroundNotificationTasksModule.unregisterTaskAsync(taskName);
17
+ }
@@ -0,0 +1,70 @@
1
+ import { useEffect, useLayoutEffect, useState } from 'react';
2
+
3
+ import { NotificationResponse } from './Notifications.types';
4
+ import { addNotificationResponseReceivedListener } from './NotificationsEmitter';
5
+ import NotificationsEmitterModule from './NotificationsEmitterModule';
6
+
7
+ /**
8
+ * A React hook always returns the notification response that was received most recently
9
+ * (a notification response designates an interaction with a notification, such as tapping on it).
10
+ *
11
+ * > If you don't want to use a hook, you can use `Notifications.getLastNotificationResponseAsync()` instead.
12
+ *
13
+ * @return The hook may return one of these three types/values:
14
+ * - `undefined` - until we're sure of what to return,
15
+ * - `null` - if no notification response has been received yet,
16
+ * - a [`NotificationResponse`](#notificationresponse) object - if a notification response was received.
17
+ *
18
+ * @example Responding to a notification tap by opening a URL that could be put into the notification's `data`
19
+ * (opening the URL is your responsibility and is not a part of the `expo-notifications` API):
20
+ * ```jsx
21
+ * import * as Notifications from '@amazon-devices/expo-notifications';
22
+ * import { Linking } from 'react-native';
23
+ *
24
+ * export default function App() {
25
+ * const lastNotificationResponse = Notifications.useLastNotificationResponse();
26
+ * React.useEffect(() => {
27
+ * if (
28
+ * lastNotificationResponse &&
29
+ * lastNotificationResponse.notification.request.content.data.url &&
30
+ * lastNotificationResponse.actionIdentifier === Notifications.DEFAULT_ACTION_IDENTIFIER
31
+ * ) {
32
+ * Linking.openURL(lastNotificationResponse.notification.request.content.data.url);
33
+ * }
34
+ * }, [lastNotificationResponse]);
35
+ * return (
36
+ * // Your app content
37
+ * );
38
+ * }
39
+ * ```
40
+ * @header listen
41
+ */
42
+ export default function useLastNotificationResponse() {
43
+ const [lastNotificationResponse, setLastNotificationResponse] = useState<
44
+ NotificationResponse | null | undefined
45
+ >(undefined);
46
+
47
+ // useLayoutEffect ensures the listener is registered as soon as possible
48
+ useLayoutEffect(() => {
49
+ const subscription = addNotificationResponseReceivedListener((response) => {
50
+ setLastNotificationResponse(response);
51
+ });
52
+ return () => {
53
+ subscription.remove();
54
+ };
55
+ }, []);
56
+
57
+ // On each mount of this hook we fetch last notification response
58
+ // from the native module which is an "always active listener"
59
+ // and always returns the most recent response.
60
+ useEffect(() => {
61
+ NotificationsEmitterModule.getLastNotificationResponseAsync?.().then((response) => {
62
+ // We only update the state with the resolved value if it's empty,
63
+ // because if it's not empty it must have been populated by the `useLayoutEffect`
64
+ // listener which returns "live" values.
65
+ setLastNotificationResponse((currentResponse) => currentResponse ?? response);
66
+ });
67
+ }, []);
68
+
69
+ return lastNotificationResponse;
70
+ }
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ *
4
+ * PROPRIETARY/CONFIDENTIAL
5
+ *
6
+ * Use is subject to license terms.
7
+ */
8
+ import { Uuid } from '../kepler';
9
+ import * as NotificationManagerTypes from '../kepler/types/NotificationManagerTypes';
10
+
11
+ export function stringifyNotificationUuid(uuid: NotificationManagerTypes.Uuid): string {
12
+ let idx = 0;
13
+ const base = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';
14
+
15
+ const numArray = uuid.bytes.map((b) => (b < 0 ? b + 256 : b));
16
+
17
+ return base.replace(/XX/g, () => numArray[idx++].toString(16).padStart(2, '0'));
18
+ }
19
+
20
+ export function parseNotificationUuid(uuidString: string): Uuid {
21
+ const base = uuidString.replace(/-/g, '').match(/.{1,2}/g);
22
+ if (base == null || base.length !== 16) {
23
+ throw new Error('Invalid UUID');
24
+ }
25
+
26
+ const bytes = base.map((n) => parseInt(n, 16)).map((n) => (n > 127 ? n - 256 : n));
27
+
28
+ return { bytes };
29
+ }