@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,23 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ // @amznmod_react - Changed .native import to one without postfix
4
+ import NotificationCategoriesModule from './NotificationCategoriesModule';
5
+
6
+ /**
7
+ * Deletes the category associated with the provided identifier.
8
+ * @param identifier Identifier initially provided to `setNotificationCategoryAsync` when creating the category.
9
+ * @return A Promise which resolves to `true` if the category was successfully deleted, or `false` if it was not.
10
+ * An example of when this method would return `false` is if you try to delete a category that doesn't exist.
11
+ * @platform android
12
+ * @platform ios
13
+ * @header categories
14
+ */
15
+ export default async function deleteNotificationCategoryAsync(
16
+ identifier: string
17
+ ): Promise<boolean> {
18
+ if (!NotificationCategoriesModule.deleteNotificationCategoryAsync) {
19
+ throw new UnavailabilityError('Notifications', 'deleteNotificationCategoryAsync');
20
+ }
21
+
22
+ return await NotificationCategoriesModule.deleteNotificationCategoryAsync(identifier);
23
+ }
@@ -0,0 +1,11 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationChannelManager from './NotificationChannelManager';
4
+
5
+ export default async function deleteNotificationChannelAsync(channelId: string): Promise<void> {
6
+ if (!NotificationChannelManager.deleteNotificationChannelAsync) {
7
+ throw new UnavailabilityError('Notifications', 'deleteNotificationChannelAsync');
8
+ }
9
+
10
+ return await NotificationChannelManager.deleteNotificationChannelAsync(channelId);
11
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Removes the notification channel.
3
+ * @param channelId The channel identifier.
4
+ * @return A Promise which resolving once the channel is removed (or if there was no channel for given identifier).
5
+ * @platform android
6
+ * @header channels
7
+ */
8
+ export default async function deleteNotificationChannelAsync(channelId: string): Promise<void> {
9
+ console.debug('Notification channels feature is only supported on Android.');
10
+ }
@@ -0,0 +1,11 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationChannelGroupManager from './NotificationChannelGroupManager';
4
+
5
+ export default async function deleteNotificationChannelAsync(groupId: string): Promise<void> {
6
+ if (!NotificationChannelGroupManager.deleteNotificationChannelGroupAsync) {
7
+ throw new UnavailabilityError('Notifications', 'deleteNotificationChannelGroupAsync');
8
+ }
9
+
10
+ return await NotificationChannelGroupManager.deleteNotificationChannelGroupAsync(groupId);
11
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Removes the notification channel group and all notification channels that belong to it.
3
+ * @param groupId The channel group identifier.
4
+ * @return A Promise which resolves once the channel group is removed (or if there was no channel group for given identifier).
5
+ * @platform android
6
+ * @header channels
7
+ */
8
+ export default async function deleteNotificationChannelGroupAsync(groupId: string): Promise<void> {
9
+ console.debug('Notification channels feature is only supported on Android.');
10
+ }
@@ -0,0 +1,16 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationPresenter from './NotificationPresenterModule';
4
+
5
+ /**
6
+ * Removes all application's notifications displayed in the notification tray (Notification Center).
7
+ * @return A Promise which resolves once the request to dismiss the notifications is successfully dispatched to the notifications manager.
8
+ * @header dismiss
9
+ */
10
+ export default async function dismissAllNotificationsAsync(): Promise<void> {
11
+ if (!NotificationPresenter.dismissAllNotificationsAsync) {
12
+ throw new UnavailabilityError('Notifications', 'dismissAllNotificationsAsync');
13
+ }
14
+
15
+ return await NotificationPresenter.dismissAllNotificationsAsync();
16
+ }
@@ -0,0 +1,19 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationPresenter from './NotificationPresenterModule';
4
+
5
+ /**
6
+ * Removes notification displayed in the notification tray (Notification Center).
7
+ * @param notificationIdentifier The notification identifier, obtained either via `setNotificationHandler` method or in the listener added with `addNotificationReceivedListener`.
8
+ * @return A Promise which resolves once the request to dismiss the notification is successfully dispatched to the notifications manager.
9
+ * @header dismiss
10
+ */
11
+ export default async function dismissNotificationAsync(
12
+ notificationIdentifier: string
13
+ ): Promise<void> {
14
+ if (!NotificationPresenter.dismissNotificationAsync) {
15
+ throw new UnavailabilityError('Notifications', 'dismissNotificationAsync');
16
+ }
17
+
18
+ return await NotificationPresenter.dismissNotificationAsync(notificationIdentifier);
19
+ }
@@ -0,0 +1,17 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationScheduler from './NotificationScheduler';
4
+ import { NotificationRequest } from './Notifications.types';
5
+
6
+ /**
7
+ * Fetches information about all scheduled notifications.
8
+ * @return Returns a Promise resolving to an array of objects conforming to the [`Notification`](#notification) interface.
9
+ * @header schedule
10
+ */
11
+ export default async function getAllScheduledNotificationsAsync(): Promise<NotificationRequest[]> {
12
+ if (!NotificationScheduler.getAllScheduledNotificationsAsync) {
13
+ throw new UnavailabilityError('Notifications', 'getAllScheduledNotificationsAsync');
14
+ }
15
+
16
+ return await NotificationScheduler.getAllScheduledNotificationsAsync();
17
+ }
@@ -0,0 +1,17 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import BadgeModule from './BadgeModule';
4
+
5
+ /**
6
+ * Fetches the number currently set as the badge of the app icon on device's home screen. A `0` value means that the badge is not displayed.
7
+ * > **Note:** Not all Android launchers support application badges. If the launcher does not support icon badges, the method will always resolve to `0`.
8
+ * @return Returns a Promise resolving to a number that represents the current badge of the app icon.
9
+ * @header badge
10
+ */
11
+ export default async function getBadgeCountAsync(): Promise<number> {
12
+ if (!BadgeModule.getBadgeCountAsync) {
13
+ throw new UnavailabilityError('ExpoNotifications', 'getBadgeCountAsync');
14
+ }
15
+
16
+ return await BadgeModule.getBadgeCountAsync();
17
+ }
@@ -0,0 +1,31 @@
1
+ import { UnavailabilityError, Platform } from 'expo-modules-core';
2
+
3
+ import PushTokenManager from './PushTokenManager';
4
+ import { DevicePushToken } from './Tokens.types';
5
+
6
+ let nativeTokenPromise: Promise<string> | null = null;
7
+
8
+ /**
9
+ * Returns a native FCM, APNs token or a [`PushSubscription` data](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription)
10
+ * that can be used with another push notification service.
11
+ * @header fetch
12
+ */
13
+ export default async function getDevicePushTokenAsync(): Promise<DevicePushToken> {
14
+ if (!PushTokenManager.getDevicePushTokenAsync) {
15
+ throw new UnavailabilityError('ExpoNotifications', 'getDevicePushTokenAsync');
16
+ }
17
+
18
+ let devicePushToken: string | null;
19
+ if (nativeTokenPromise) {
20
+ // Reuse existing Promise
21
+ devicePushToken = await nativeTokenPromise;
22
+ } else {
23
+ // Create a new Promise and clear it afterwards
24
+ nativeTokenPromise = PushTokenManager.getDevicePushTokenAsync();
25
+ devicePushToken = await nativeTokenPromise;
26
+ nativeTokenPromise = null;
27
+ }
28
+
29
+ // @ts-ignore: TS thinks Platform.OS could be anything and can't decide what type is it
30
+ return { type: Platform.OS, data: devicePushToken };
31
+ }
@@ -0,0 +1,122 @@
1
+ import Constants from '@amazon-devices/expo-constants';
2
+ import { CodedError, Platform, SyntheticPlatformEmitter } from 'expo-modules-core';
3
+
4
+ import { DevicePushToken } from './Tokens.types';
5
+
6
+ export default async function getDevicePushTokenAsync(): Promise<DevicePushToken> {
7
+ const data = await _subscribeDeviceToPushNotificationsAsync();
8
+ SyntheticPlatformEmitter.emit('onDevicePushToken', { devicePushToken: data });
9
+ return { type: Platform.OS, data };
10
+ }
11
+
12
+ function guardPermission() {
13
+ if (!('Notification' in window)) {
14
+ throw new CodedError(
15
+ 'ERR_UNAVAILABLE',
16
+ 'The Web Notifications API is not available on this device.'
17
+ );
18
+ }
19
+ if (!navigator.serviceWorker) {
20
+ throw new CodedError(
21
+ 'ERR_UNAVAILABLE',
22
+ 'Notifications cannot be used because the service worker API is not supported on this device. This might also happen because your web page does not support HTTPS.'
23
+ );
24
+ }
25
+ if (Notification.permission !== 'granted') {
26
+ throw new CodedError(
27
+ 'ERR_NOTIFICATIONS_PERMISSION_DENIED',
28
+ `Cannot use web notifications without permissions granted. Request permissions with "expo-permissions".`
29
+ );
30
+ }
31
+ }
32
+
33
+ async function _subscribeDeviceToPushNotificationsAsync(): Promise<DevicePushToken['data']> {
34
+ // @ts-expect-error: TODO: not on the schema
35
+ const vapidPublicKey: string | null = Constants.expoConfig?.notification?.vapidPublicKey;
36
+ if (!vapidPublicKey) {
37
+ throw new CodedError(
38
+ 'ERR_NOTIFICATIONS_PUSH_WEB_MISSING_CONFIG',
39
+ 'You must provide `notification.vapidPublicKey` in `app.json` to use push notifications on web. Learn more: https://docs.expo.dev/versions/latest/guides/using-vapid/.'
40
+ );
41
+ }
42
+
43
+ // @ts-expect-error: TODO: not on the schema
44
+ const serviceWorkerPath = Constants.expoConfig?.notification?.serviceWorkerPath;
45
+ if (!serviceWorkerPath) {
46
+ throw new CodedError(
47
+ 'ERR_NOTIFICATIONS_PUSH_MISSING_CONFIGURATION',
48
+ 'You must specify `notification.serviceWorkerPath` in `app.json` to use push notifications on the web. Please provide the path to the service worker that will handle notifications.'
49
+ );
50
+ }
51
+ guardPermission();
52
+
53
+ let registration: ServiceWorkerRegistration | null = null;
54
+ try {
55
+ registration = await navigator.serviceWorker.register(serviceWorkerPath);
56
+ } catch (error) {
57
+ throw new CodedError(
58
+ 'ERR_NOTIFICATIONS_PUSH_REGISTRATION_FAILED',
59
+ `Could not register this device for push notifications because the service worker (${serviceWorkerPath}) could not be registered: ${error}`
60
+ );
61
+ }
62
+ await navigator.serviceWorker.ready;
63
+
64
+ if (!registration.active) {
65
+ throw new CodedError(
66
+ 'ERR_NOTIFICATIONS_PUSH_REGISTRATION_FAILED',
67
+ 'Could not register this device for push notifications because the service worker is not active.'
68
+ );
69
+ }
70
+
71
+ const subscribeOptions = {
72
+ userVisibleOnly: true,
73
+ applicationServerKey: _urlBase64ToUint8Array(vapidPublicKey),
74
+ };
75
+ let pushSubscription: PushSubscription | null = null;
76
+ try {
77
+ // @ts-ignore
78
+ pushSubscription = await registration.pushManager.subscribe(subscribeOptions);
79
+ } catch (error) {
80
+ throw new CodedError(
81
+ 'ERR_NOTIFICATIONS_PUSH_REGISTRATION_FAILED',
82
+ 'The device was unable to register for remote notifications with the browser endpoint. (' +
83
+ error +
84
+ ')'
85
+ );
86
+ }
87
+ const pushSubscriptionJson = pushSubscription.toJSON();
88
+
89
+ const subscriptionObject = {
90
+ endpoint: pushSubscriptionJson.endpoint,
91
+ keys: {
92
+ p256dh: pushSubscriptionJson.keys!.p256dh,
93
+ auth: pushSubscriptionJson.keys!.auth,
94
+ },
95
+ };
96
+
97
+ // Store notification icon string in service worker.
98
+ // This message is received by `/expo-service-worker.js`.
99
+ // We wrap it with `fromExpoWebClient` to make sure other message
100
+ // will not override content such as `notificationIcon`.
101
+ // https://stackoverflow.com/a/35729334/2603230
102
+ const notificationIcon = (Constants.expoConfig?.notification ?? {}).icon;
103
+ await registration.active.postMessage(
104
+ JSON.stringify({ fromExpoWebClient: { notificationIcon } })
105
+ );
106
+
107
+ return subscriptionObject;
108
+ }
109
+
110
+ // https://github.com/web-push-libs/web-push#using-vapid-key-for-applicationserverkey
111
+ function _urlBase64ToUint8Array(base64String: string): Uint8Array {
112
+ const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
113
+ const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
114
+
115
+ const rawData = window.atob(base64);
116
+ const outputArray = new Uint8Array(rawData.length);
117
+
118
+ for (let i = 0; i < rawData.length; ++i) {
119
+ outputArray[i] = rawData.charCodeAt(i);
120
+ }
121
+ return outputArray;
122
+ }
@@ -0,0 +1,238 @@
1
+ import * as Application from '@amazon-devices/expo-application';
2
+ import Constants from '@amazon-devices/expo-constants';
3
+ import { Platform, CodedError, UnavailabilityError } from 'expo-modules-core';
4
+
5
+ import { setAutoServerRegistrationEnabledAsync } from './DevicePushTokenAutoRegistration.fx';
6
+ import ServerRegistrationModule from './ServerRegistrationModule';
7
+ import { DevicePushToken, ExpoPushToken, ExpoPushTokenOptions } from './Tokens.types';
8
+ import getDevicePushTokenAsync from './getDevicePushTokenAsync';
9
+
10
+ const productionBaseUrl = 'https://exp.host/--/api/v2/';
11
+
12
+ /**
13
+ * Returns an Expo token that can be used to send a push notification to the device using Expo's push notifications service.
14
+ *
15
+ * This method makes requests to the Expo's servers. It can get rejected in cases where the request itself fails
16
+ * (for example, due to the device being offline, experiencing a network timeout, or other HTTPS request failures).
17
+ * To provide offline support to your users, you should `try/catch` this method and implement retry logic to attempt
18
+ * to get the push token later, once the device is back online.
19
+ *
20
+ * > For Expo's backend to be able to send notifications to your app, you will need to provide it with push notification keys.
21
+ * For more information, see [credentials](/push-notifications/push-notifications-setup/#get-credentials-for-development-builds) in the push notifications setup.
22
+ *
23
+ * @param options Object allowing you to pass in push notification configuration.
24
+ * @return Returns a `Promise` that resolves to an object representing acquired push token.
25
+ * @header fetch
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * import * as Notifications from '@amazon-devices/expo-notifications';
30
+ *
31
+ * export async function registerForPushNotificationsAsync(userId: string) {
32
+ * const expoPushToken = await Notifications.getExpoPushTokenAsync({
33
+ * projectId: 'your-project-id',
34
+ * });
35
+ *
36
+ * await fetch('https://example.com/', {
37
+ * method: 'POST',
38
+ * headers: {
39
+ * 'Content-Type': 'application/json',
40
+ * },
41
+ * body: JSON.stringify({
42
+ * userId,
43
+ * expoPushToken,
44
+ * }),
45
+ * });
46
+ * }
47
+ * ```
48
+ */
49
+ export default async function getExpoPushTokenAsync(
50
+ options: ExpoPushTokenOptions = {}
51
+ ): Promise<ExpoPushToken> {
52
+ const devicePushToken = options.devicePushToken || (await getDevicePushTokenAsync());
53
+
54
+ const deviceId = options.deviceId || (await getDeviceIdAsync());
55
+ const projectId = options.projectId || Constants.easConfig?.projectId;
56
+
57
+ if (!projectId) {
58
+ console.warn(
59
+ 'Calling getExpoPushTokenAsync without specifying a projectId is deprecated and will no longer be supported in SDK 49+'
60
+ );
61
+ }
62
+
63
+ if (!projectId) {
64
+ throw new CodedError(
65
+ 'ERR_NOTIFICATIONS_NO_EXPERIENCE_ID',
66
+ "No 'projectId' found. If 'projectId' can't be inferred from the manifest (eg. in bare workflow), you have to pass it in yourself."
67
+ );
68
+ }
69
+
70
+ const applicationId = options.applicationId || Application.applicationId;
71
+ if (!applicationId) {
72
+ throw new CodedError(
73
+ 'ERR_NOTIFICATIONS_NO_APPLICATION_ID',
74
+ "No applicationId found. If it can't be inferred from native configuration by expo-application, you have to pass it in yourself."
75
+ );
76
+ }
77
+ const type = options.type || getTypeOfToken(devicePushToken);
78
+ const development = options.development || (await shouldUseDevelopmentNotificationService());
79
+
80
+ const baseUrl = options.baseUrl ?? productionBaseUrl;
81
+ const url = options.url ?? `${baseUrl}push/getExpoPushToken`;
82
+
83
+ const body = {
84
+ type,
85
+ deviceId: deviceId.toLowerCase(),
86
+ development,
87
+ appId: applicationId,
88
+ deviceToken: getDeviceToken(devicePushToken),
89
+ projectId,
90
+ };
91
+
92
+ const response = await fetch(url, {
93
+ method: 'POST',
94
+ headers: {
95
+ 'content-type': 'application/json',
96
+ },
97
+ body: JSON.stringify(body),
98
+ }).catch((error) => {
99
+ throw new CodedError(
100
+ 'ERR_NOTIFICATIONS_NETWORK_ERROR',
101
+ `Error encountered while fetching Expo token: ${error}.`
102
+ );
103
+ });
104
+
105
+ if (!response.ok) {
106
+ const statusInfo = response.statusText || response.status;
107
+ let body: string | undefined = undefined;
108
+ try {
109
+ body = await response.text();
110
+ } catch {
111
+ // do nothing
112
+ }
113
+ throw new CodedError(
114
+ 'ERR_NOTIFICATIONS_SERVER_ERROR',
115
+ `Error encountered while fetching Expo token, expected an OK response, received: ${statusInfo} (body: "${body}").`
116
+ );
117
+ }
118
+
119
+ const expoPushToken = getExpoPushToken(await parseResponse(response));
120
+
121
+ try {
122
+ if (options.url || options.baseUrl) {
123
+ console.debug(
124
+ `[expo-notifications] Since the URL endpoint to register in has been customized in the options, expo-notifications won't try to auto-update the device push token on the server.`
125
+ );
126
+ } else {
127
+ await setAutoServerRegistrationEnabledAsync(true);
128
+ }
129
+ } catch (e) {
130
+ console.warn(
131
+ '[expo-notifications] Could not enable automatically registering new device tokens with the Expo notification service',
132
+ e
133
+ );
134
+ }
135
+
136
+ return {
137
+ type: 'expo',
138
+ data: expoPushToken,
139
+ };
140
+ }
141
+
142
+ async function parseResponse(response: Response) {
143
+ try {
144
+ return await response.json();
145
+ } catch {
146
+ try {
147
+ throw new CodedError(
148
+ 'ERR_NOTIFICATIONS_SERVER_ERROR',
149
+ `Expected a JSON response from server when fetching Expo token, received body: ${JSON.stringify(
150
+ await response.text()
151
+ )}.`
152
+ );
153
+ } catch {
154
+ throw new CodedError(
155
+ 'ERR_NOTIFICATIONS_SERVER_ERROR',
156
+ `Expected a JSON response from server when fetching Expo token, received response: ${JSON.stringify(
157
+ response
158
+ )}.`
159
+ );
160
+ }
161
+ }
162
+ }
163
+
164
+ function getExpoPushToken(data: any) {
165
+ if (
166
+ !data ||
167
+ !(typeof data === 'object') ||
168
+ !data.data ||
169
+ !(typeof data.data === 'object') ||
170
+ !data.data.expoPushToken ||
171
+ !(typeof data.data.expoPushToken === 'string')
172
+ ) {
173
+ throw new CodedError(
174
+ 'ERR_NOTIFICATIONS_SERVER_ERROR',
175
+ `Malformed response from server, expected "{ data: { expoPushToken: string } }", received: ${JSON.stringify(
176
+ data,
177
+ null,
178
+ 2
179
+ )}.`
180
+ );
181
+ }
182
+
183
+ return data.data.expoPushToken as string;
184
+ }
185
+
186
+ // Same as in DevicePushTokenAutoRegistration
187
+ async function getDeviceIdAsync() {
188
+ try {
189
+ if (!ServerRegistrationModule.getInstallationIdAsync) {
190
+ throw new UnavailabilityError('ExpoServerRegistrationModule', 'getInstallationIdAsync');
191
+ }
192
+
193
+ return await ServerRegistrationModule.getInstallationIdAsync();
194
+ } catch (e) {
195
+ throw new CodedError(
196
+ 'ERR_NOTIF_DEVICE_ID',
197
+ `Could not have fetched installation ID of the application: ${e}.`
198
+ );
199
+ }
200
+ }
201
+
202
+ function getDeviceToken(devicePushToken: DevicePushToken) {
203
+ if (typeof devicePushToken.data === 'string') {
204
+ return devicePushToken.data;
205
+ }
206
+
207
+ return JSON.stringify(devicePushToken.data);
208
+ }
209
+
210
+ // Same as in DevicePushTokenAutoRegistration
211
+ async function shouldUseDevelopmentNotificationService() {
212
+ if (Platform.OS === 'ios') {
213
+ try {
214
+ const notificationServiceEnvironment =
215
+ await Application.getIosPushNotificationServiceEnvironmentAsync();
216
+ if (notificationServiceEnvironment === 'development') {
217
+ return true;
218
+ }
219
+ } catch {
220
+ // We can't do anything here, we'll fallback to false then.
221
+ }
222
+ }
223
+
224
+ return false;
225
+ }
226
+
227
+ // Same as in DevicePushTokenAutoRegistration
228
+ function getTypeOfToken(devicePushToken: DevicePushToken) {
229
+ switch (devicePushToken.type) {
230
+ case 'ios':
231
+ return 'apns';
232
+ case 'android':
233
+ return 'fcm';
234
+ // This probably will error on server, but let's make this function future-safe.
235
+ default:
236
+ return devicePushToken.type;
237
+ }
238
+ }
@@ -0,0 +1,38 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationScheduler from './NotificationScheduler';
4
+ import { SchedulableNotificationTriggerInput } from './Notifications.types';
5
+ import { parseTrigger } from './scheduleNotificationAsync';
6
+
7
+ /**
8
+ * Allows you to check what will be the next trigger date for given notification trigger input.
9
+ * @param trigger The schedulable notification trigger you would like to check next trigger date for (of type [`SchedulableNotificationTriggerInput`](#schedulablenotificationtriggerinput)).
10
+ * @return If the return value is `null`, the notification won't be triggered. Otherwise, the return value is the Unix timestamp in milliseconds
11
+ * at which the notification will be triggered.
12
+ * @example Calculate next trigger date for a notification trigger:
13
+ * ```ts
14
+ * import * as Notifications from '@amazon-devices/expo-notifications';
15
+ *
16
+ * async function logNextTriggerDate() {
17
+ * try {
18
+ * const nextTriggerDate = await Notifications.getNextTriggerDateAsync({
19
+ * hour: 9,
20
+ * minute: 0,
21
+ * });
22
+ * console.log(nextTriggerDate === null ? 'No next trigger date' : new Date(nextTriggerDate));
23
+ * } catch (e) {
24
+ * console.warn(`Couldn't have calculated next trigger date: ${e}`);
25
+ * }
26
+ * }
27
+ * ```
28
+ * @header schedule
29
+ */
30
+ export default async function getNextTriggerDateAsync(
31
+ trigger: SchedulableNotificationTriggerInput
32
+ ): Promise<number | null> {
33
+ if (!NotificationScheduler.getNextTriggerDateAsync) {
34
+ throw new UnavailabilityError('ExpoNotifications', 'getNextTriggerDateAsync');
35
+ }
36
+
37
+ return await NotificationScheduler.getNextTriggerDateAsync(parseTrigger(trigger));
38
+ }
@@ -0,0 +1,21 @@
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 { NotificationCategory } from './Notifications.types';
6
+
7
+ /**
8
+ * Fetches information about all known notification categories.
9
+ * @return A Promise which resolves to an array of `NotificationCategory`s. On platforms that do not support notification channels,
10
+ * it will always resolve to an empty array.
11
+ * @platform android
12
+ * @platform ios
13
+ * @header categories
14
+ */
15
+ export default async function getNotificationCategoriesAsync(): Promise<NotificationCategory[]> {
16
+ if (!NotificationCategoriesModule.getNotificationCategoriesAsync) {
17
+ throw new UnavailabilityError('Notifications', 'getNotificationCategoriesAsync');
18
+ }
19
+
20
+ return await NotificationCategoriesModule.getNotificationCategoriesAsync();
21
+ }
@@ -0,0 +1,13 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationChannelManager from './NotificationChannelManager';
4
+ import { NotificationChannel } from './NotificationChannelManager.types';
5
+
6
+ export default async function getNotificationChannelAsync(
7
+ channelId: string
8
+ ): Promise<NotificationChannel | null> {
9
+ if (!NotificationChannelManager.getNotificationChannelAsync) {
10
+ throw new UnavailabilityError('Notifications', 'getNotificationChannelAsync');
11
+ }
12
+ return await NotificationChannelManager.getNotificationChannelAsync(channelId);
13
+ }
@@ -0,0 +1,16 @@
1
+ import { NotificationChannel } from './NotificationChannelManager.types';
2
+
3
+ /**
4
+ * Fetches information about a single notification channel.
5
+ * @param channelId The channel's identifier.
6
+ * @return A Promise which resolves to the channel object (of type [`NotificationChannel`](#notificationchannel)) or to `null`
7
+ * if there was no channel found for this identifier. On platforms that do not support notification channels, it will always resolve to `null`.
8
+ * @platform android
9
+ * @header channels
10
+ */
11
+ export default async function getNotificationChannelAsync(
12
+ channelId: string
13
+ ): Promise<NotificationChannel | null> {
14
+ console.debug('Notification channels feature is only supported on Android.');
15
+ return null;
16
+ }
@@ -0,0 +1,14 @@
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
+
3
+ import NotificationChannelGroupManager from './NotificationChannelGroupManager';
4
+ import { NotificationChannelGroup } from './NotificationChannelGroupManager.types';
5
+
6
+ export default async function getNotificationChannelGroupAsync(
7
+ groupId: string
8
+ ): Promise<NotificationChannelGroup | null> {
9
+ if (!NotificationChannelGroupManager.getNotificationChannelGroupAsync) {
10
+ throw new UnavailabilityError('Notifications', 'getNotificationChannelGroupAsync');
11
+ }
12
+
13
+ return await NotificationChannelGroupManager.getNotificationChannelGroupAsync(groupId);
14
+ }
@@ -0,0 +1,17 @@
1
+ import { NotificationChannelGroup } from './NotificationChannelGroupManager.types';
2
+
3
+ /**
4
+ * Fetches information about a single notification channel group.
5
+ * @param groupId The channel group's identifier.
6
+ * @return A Promise which resolves to the channel group object (of type [`NotificationChannelGroup`](#notificationchannelgroup))
7
+ * or to `null` if there was no channel group found for this identifier. On platforms that do not support notification channels,
8
+ * it will always resolve to `null`.
9
+ * @platform android
10
+ * @header channels
11
+ */
12
+ export default async function getNotificationChannelGroupAsync(
13
+ groupId: string
14
+ ): Promise<NotificationChannelGroup | null> {
15
+ console.debug('Notification channels feature is only supported on Android.');
16
+ return null;
17
+ }