@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,295 @@
1
+ package expo.modules.notifications.notifications.presentation.builders;
2
+
3
+ import android.app.Notification;
4
+ import android.content.Context;
5
+ import android.content.pm.ApplicationInfo;
6
+ import android.content.pm.PackageManager;
7
+ import android.content.res.Resources;
8
+ import android.graphics.Bitmap;
9
+ import android.graphics.BitmapFactory;
10
+ import android.os.Build;
11
+ import android.os.Bundle;
12
+ import android.os.Parcel;
13
+ import android.provider.Settings;
14
+ import android.util.Log;
15
+
16
+ import androidx.annotation.Nullable;
17
+ import androidx.core.app.NotificationCompat;
18
+ import expo.modules.notifications.notifications.enums.NotificationPriority;
19
+ import expo.modules.notifications.notifications.interfaces.NotificationBuilder;
20
+ import expo.modules.notifications.notifications.model.NotificationAction;
21
+ import expo.modules.notifications.notifications.model.NotificationContent;
22
+ import expo.modules.notifications.notifications.model.NotificationRequest;
23
+ import expo.modules.notifications.service.NotificationsService;
24
+
25
+ import static expo.modules.notifications.notifications.model.NotificationResponse.DEFAULT_ACTION_IDENTIFIER;
26
+
27
+ /**
28
+ * {@link NotificationBuilder} interpreting a JSON request object.
29
+ */
30
+ public class ExpoNotificationBuilder extends ChannelAwareNotificationBuilder {
31
+ public static final String META_DATA_DEFAULT_ICON_KEY = "expo.modules.notifications.default_notification_icon";
32
+ public static final String META_DATA_LARGE_ICON_KEY = "expo.modules.notifications.large_notification_icon";
33
+ public static final String META_DATA_DEFAULT_COLOR_KEY = "expo.modules.notifications.default_notification_color";
34
+ public static final String EXTRAS_MARSHALLED_NOTIFICATION_REQUEST_KEY = "expo.notification_request";
35
+ private static final String EXTRAS_BODY_KEY = "body";
36
+
37
+ private static final long[] NO_VIBRATE_PATTERN = new long[]{0, 0};
38
+
39
+ public ExpoNotificationBuilder(Context context) {
40
+ super(context);
41
+ }
42
+
43
+ protected NotificationCompat.Builder createBuilder() {
44
+ NotificationCompat.Builder builder = super.createBuilder();
45
+ builder.setSmallIcon(getIcon());
46
+ builder.setLargeIcon(getLargeIcon());
47
+ builder.setPriority(getPriority());
48
+
49
+ NotificationContent content = getNotificationContent();
50
+
51
+ builder.setAutoCancel(content.isAutoDismiss());
52
+ builder.setOngoing(content.isSticky());
53
+
54
+ builder.setContentTitle(content.getTitle());
55
+ builder.setContentText(content.getText());
56
+ builder.setSubText(content.getSubtitle());
57
+ // Sets the text/contentText as the bigText to allow the notification to be expanded and the
58
+ // entire text to be viewed.
59
+ builder.setStyle(new NotificationCompat.BigTextStyle().bigText(content.getText()));
60
+
61
+ Number notificationColor = getColor();
62
+ if (notificationColor != null) {
63
+ builder.setColor(notificationColor.intValue());
64
+ }
65
+
66
+ boolean shouldPlayDefaultSound = shouldPlaySound() && content.shouldPlayDefaultSound();
67
+ if (shouldPlayDefaultSound && shouldVibrate()) {
68
+ builder.setDefaults(NotificationCompat.DEFAULT_ALL); // set sound, vibration and lights
69
+ } else if (shouldVibrate()) {
70
+ builder.setDefaults(NotificationCompat.DEFAULT_VIBRATE);
71
+ } else if (shouldPlayDefaultSound) {
72
+ builder.setDefaults(NotificationCompat.DEFAULT_SOUND);
73
+ } else {
74
+ // Notification will not vibrate or play sound, regardless of channel
75
+ builder.setSilent(true);
76
+ }
77
+
78
+ if (shouldPlaySound() && content.getSound() != null) {
79
+ builder.setSound(content.getSound());
80
+ } else if (shouldPlayDefaultSound) {
81
+ builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
82
+ }
83
+
84
+ long[] vibrationPatternOverride = content.getVibrationPattern();
85
+ if (shouldVibrate() && vibrationPatternOverride != null) {
86
+ builder.setVibrate(vibrationPatternOverride);
87
+ }
88
+
89
+ if (content.getBody() != null) {
90
+ // Add body - JSON data - to extras
91
+ Bundle extras = builder.getExtras();
92
+ extras.putString(EXTRAS_BODY_KEY, content.getBody().toString());
93
+ builder.setExtras(extras);
94
+ }
95
+
96
+ // Save the notification request in extras for later usage
97
+ // eg. in ExpoPresentationDelegate when we fetch active notifications.
98
+ // Otherwise we'd have to create expo.Notification from android.Notification
99
+ // and deal with two-way interpreting.
100
+ Bundle requestExtras = new Bundle();
101
+ // Class loader used in BaseBundle when unmarshalling notification extras
102
+ // cannot handle expo.modules.notifications.….NotificationRequest
103
+ // so we go around it by marshalling and unmarshalling the object ourselves.
104
+ requestExtras.putByteArray(EXTRAS_MARSHALLED_NOTIFICATION_REQUEST_KEY, marshallNotificationRequest(getNotification().getNotificationRequest()));
105
+ builder.addExtras(requestExtras);
106
+
107
+ NotificationAction defaultAction = new NotificationAction(DEFAULT_ACTION_IDENTIFIER, null, true);
108
+ builder.setContentIntent(NotificationsService.Companion.createNotificationResponseIntent(getContext(), getNotification(), defaultAction));
109
+
110
+ return builder;
111
+ }
112
+
113
+ @Override
114
+ public Notification build() {
115
+ return createBuilder().build();
116
+ }
117
+
118
+ /**
119
+ * Marshalls {@link NotificationRequest} into to a byte array.
120
+ *
121
+ * @param request Notification request to marshall
122
+ * @return Given request marshalled to a byte array or null if the process failed.
123
+ */
124
+ @Nullable
125
+ protected byte[] marshallNotificationRequest(NotificationRequest request) {
126
+ try {
127
+ Parcel parcel = Parcel.obtain();
128
+ request.writeToParcel(parcel, 0);
129
+ byte[] bytes = parcel.marshall();
130
+ parcel.recycle();
131
+ return bytes;
132
+ } catch (Exception e) {
133
+ // If we couldn't marshall the request, let's not fail the whole build process.
134
+ // The request is only used to extract source request when fetching displayed notifications.
135
+ Log.e("expo-notifications", String.format("Could not marshalled notification request: %s.", request.getIdentifier()));
136
+ e.printStackTrace();
137
+ return null;
138
+ }
139
+ }
140
+
141
+ /**
142
+ * Notification should play a sound if and only if:
143
+ * - behavior is not set or allows sound AND
144
+ * - notification request doesn't explicitly set "sound" to false.
145
+ * <p>
146
+ * This way a notification can set "sound" to false to disable sound,
147
+ * and we always honor the allowedBehavior, if set.
148
+ *
149
+ * @return Whether the notification should play a sound.
150
+ */
151
+ private boolean shouldPlaySound() {
152
+ boolean behaviorAllowsSound = getNotificationBehavior() == null || getNotificationBehavior().shouldPlaySound();
153
+
154
+ NotificationContent content = getNotificationContent();
155
+ boolean contentAllowsSound = content.shouldPlayDefaultSound() || content.getSound() != null;
156
+
157
+ return behaviorAllowsSound && contentAllowsSound;
158
+ }
159
+
160
+ /**
161
+ * Notification should vibrate if and only if:
162
+ * - behavior is not set or allows sound AND
163
+ * - notification request doesn't explicitly set "vibrate" to false.
164
+ * <p>
165
+ * This way a notification can set "vibrate" to false to disable vibration.
166
+ *
167
+ * @return Whether the notification should vibrate.
168
+ */
169
+ private boolean shouldVibrate() {
170
+ boolean behaviorAllowsVibration = getNotificationBehavior() == null || getNotificationBehavior().shouldPlaySound();
171
+
172
+ NotificationContent content = getNotificationContent();
173
+ boolean contentAllowsVibration = content.shouldUseDefaultVibrationPattern() || content.getVibrationPattern() != null;
174
+
175
+ return behaviorAllowsVibration && contentAllowsVibration;
176
+ }
177
+
178
+ /**
179
+ * When setting the priority we want to honor both behavior set by the current
180
+ * notification handler and the preset priority (in that order of significance).
181
+ * <p>
182
+ * We do this by returning:
183
+ * - if behavior defines a priority: the priority,
184
+ * - if the notification should be shown: high priority (or max, if requested in the notification),
185
+ * - if the notification should not be shown: default priority (or lower, if requested in the notification).
186
+ * <p>
187
+ * This way we allow full customization to the developers.
188
+ *
189
+ * @return Priority of the notification, one of NotificationCompat.PRIORITY_*
190
+ */
191
+ private int getPriority() {
192
+ NotificationPriority requestPriority = getNotificationContent().getPriority();
193
+
194
+ // If we know of a behavior guideline, let's honor it...
195
+ if (getNotificationBehavior() != null) {
196
+ // ...by using the priority override...
197
+ NotificationPriority priorityOverride = getNotificationBehavior().getPriorityOverride();
198
+ if (priorityOverride != null) {
199
+ return priorityOverride.getNativeValue();
200
+ }
201
+
202
+ // ...or by setting min/max values for priority:
203
+ // If the notification has no priority set, let's pick a neutral value and depend solely on the behavior.
204
+ int requestPriorityValue =
205
+ requestPriority != null
206
+ ? requestPriority.getNativeValue()
207
+ : NotificationPriority.DEFAULT.getNativeValue();
208
+
209
+ // TODO (barthap): This is going to be a dead code upon removing presentNotificationAsync()
210
+ // shouldShowAlert() will always be false here.
211
+ if (getNotificationBehavior().shouldShowAlert()) {
212
+ // Display as a heads-up notification, as per the behavior
213
+ // while also allowing making the priority higher.
214
+ return Math.max(NotificationCompat.PRIORITY_HIGH, requestPriorityValue);
215
+ } else {
216
+ // Do not display as a heads-up notification, but show in the notification tray
217
+ // as per the behavior, while also allowing making the priority lower.
218
+ return Math.min(NotificationCompat.PRIORITY_DEFAULT, requestPriorityValue);
219
+ }
220
+ }
221
+
222
+ // No behavior is set, the only source of priority can be the request.
223
+ if (requestPriority != null) {
224
+ return requestPriority.getNativeValue();
225
+ }
226
+
227
+ // By default let's show the notification
228
+ return NotificationCompat.PRIORITY_HIGH;
229
+ }
230
+
231
+ /**
232
+ * The method first tries to get the large icon from the manifest's meta-data {@link #META_DATA_DEFAULT_ICON_KEY}.
233
+ * If a custom setting is not found, the method falls back to null.
234
+ *
235
+ * @return Bitmap containing larger icon or null if a custom settings was not provided.
236
+ */
237
+ @Nullable
238
+ protected Bitmap getLargeIcon() {
239
+ try {
240
+ ApplicationInfo ai = getContext().getPackageManager().getApplicationInfo(getContext().getPackageName(), PackageManager.GET_META_DATA);
241
+ if (ai.metaData.containsKey(META_DATA_LARGE_ICON_KEY)) {
242
+ int resourceId = ai.metaData.getInt(META_DATA_LARGE_ICON_KEY);
243
+ return BitmapFactory.decodeResource(getContext().getResources(), resourceId);
244
+ }
245
+ } catch (PackageManager.NameNotFoundException | ClassCastException e) {
246
+ Log.e("expo-notifications", "Could not have fetched large notification icon.");
247
+ }
248
+ return null;
249
+ }
250
+
251
+ /**
252
+ * The method first tries to get the icon from the manifest's meta-data {@link #META_DATA_DEFAULT_ICON_KEY}.
253
+ * If a custom setting is not found, the method falls back to using app icon.
254
+ *
255
+ * @return Resource ID for icon that should be used as a notification icon.
256
+ */
257
+ protected int getIcon() {
258
+ try {
259
+ ApplicationInfo ai = getContext().getPackageManager().getApplicationInfo(getContext().getPackageName(), PackageManager.GET_META_DATA);
260
+ if (ai.metaData.containsKey(META_DATA_DEFAULT_ICON_KEY)) {
261
+ return ai.metaData.getInt(META_DATA_DEFAULT_ICON_KEY);
262
+ }
263
+ } catch (PackageManager.NameNotFoundException | ClassCastException e) {
264
+ Log.e("expo-notifications", "Could not have fetched default notification icon.");
265
+ }
266
+ return getContext().getApplicationInfo().icon;
267
+ }
268
+
269
+ /**
270
+ * The method responsible for finding and returning a custom color used to color the notification icon.
271
+ * It first tries to use a custom color defined in notification content, then it tries to fetch color
272
+ * from resources (based on manifest's meta-data). If not found, returns null.
273
+ *
274
+ * @return A {@link Number}, if a custom color should be used for notification icon
275
+ * or null if the default should be used.
276
+ */
277
+ @Nullable
278
+ protected Number getColor() {
279
+ if (getNotificationContent().getColor() != null) {
280
+ return getNotificationContent().getColor();
281
+ }
282
+
283
+ try {
284
+ ApplicationInfo ai = getContext().getPackageManager().getApplicationInfo(getContext().getPackageName(), PackageManager.GET_META_DATA);
285
+ if (ai.metaData.containsKey(META_DATA_DEFAULT_COLOR_KEY)) {
286
+ return getContext().getResources().getColor(ai.metaData.getInt(META_DATA_DEFAULT_COLOR_KEY), null);
287
+ }
288
+ } catch (PackageManager.NameNotFoundException | Resources.NotFoundException | ClassCastException e) {
289
+ Log.e("expo-notifications", "Could not have fetched default notification color.");
290
+ }
291
+
292
+ // No custom color
293
+ return null;
294
+ }
295
+ }
@@ -0,0 +1,53 @@
1
+ package expo.modules.notifications.notifications.presentation.effects;
2
+
3
+ import android.app.Notification;
4
+ import android.content.Context;
5
+
6
+ import expo.modules.core.ModuleRegistry;
7
+ import expo.modules.core.interfaces.InternalModule;
8
+
9
+ import java.util.Collections;
10
+ import java.util.List;
11
+
12
+ import androidx.annotation.Nullable;
13
+ import expo.modules.notifications.notifications.interfaces.NotificationPresentationEffect;
14
+ import expo.modules.notifications.notifications.interfaces.NotificationPresentationEffectsManager;
15
+
16
+ public abstract class BaseNotificationEffect implements InternalModule, NotificationPresentationEffect {
17
+ private Context mContext;
18
+ private NotificationPresentationEffectsManager mManager;
19
+
20
+ public BaseNotificationEffect(Context context) {
21
+ mContext = context;
22
+ }
23
+
24
+ protected Context getContext() {
25
+ return mContext;
26
+ }
27
+
28
+ @Override
29
+ public List<? extends Class> getExportedInterfaces() {
30
+ return Collections.singletonList(getClass());
31
+ }
32
+
33
+ @Override
34
+ public void onCreate(ModuleRegistry moduleRegistry) {
35
+ mManager = moduleRegistry.getModule(NotificationPresentationEffectsManager.class);
36
+ mManager.addEffect(this);
37
+ }
38
+
39
+ @Override
40
+ public void onDestroy() {
41
+ mManager.removeEffect(this);
42
+ }
43
+
44
+ @Override
45
+ public boolean onNotificationPresented(@Nullable String tag, int id, Notification notification) {
46
+ return false;
47
+ }
48
+
49
+ @Override
50
+ public boolean onNotificationPresentationFailed(@Nullable String tag, int id, Notification notification) {
51
+ return false;
52
+ }
53
+ }
@@ -0,0 +1,235 @@
1
+ package expo.modules.notifications.notifications.scheduling
2
+
3
+ import android.content.Context
4
+ import android.os.Bundle
5
+ import android.os.Handler
6
+ import android.os.Looper
7
+ import expo.modules.core.arguments.ReadableArguments
8
+ import expo.modules.core.errors.InvalidArgumentException
9
+ import expo.modules.kotlin.Promise
10
+ import expo.modules.kotlin.exception.Exceptions
11
+ import expo.modules.kotlin.modules.Module
12
+ import expo.modules.kotlin.modules.ModuleDefinition
13
+ import expo.modules.notifications.ResultReceiverBody
14
+ import expo.modules.notifications.createDefaultResultReceiver
15
+ import expo.modules.notifications.notifications.ArgumentsNotificationContentBuilder
16
+ import expo.modules.notifications.notifications.NotificationSerializer
17
+ import expo.modules.notifications.notifications.interfaces.NotificationTrigger
18
+ import expo.modules.notifications.notifications.interfaces.SchedulableNotificationTrigger
19
+ import expo.modules.notifications.notifications.model.NotificationContent
20
+ import expo.modules.notifications.notifications.model.NotificationRequest
21
+ import expo.modules.notifications.notifications.triggers.ChannelAwareTrigger
22
+ import expo.modules.notifications.notifications.triggers.DailyTrigger
23
+ import expo.modules.notifications.notifications.triggers.DateTrigger
24
+ import expo.modules.notifications.notifications.triggers.TimeIntervalTrigger
25
+ import expo.modules.notifications.notifications.triggers.WeeklyTrigger
26
+ import expo.modules.notifications.notifications.triggers.YearlyTrigger
27
+ import expo.modules.notifications.service.NotificationsService
28
+ import expo.modules.notifications.service.NotificationsService.Companion.getAllScheduledNotifications
29
+ import expo.modules.notifications.service.NotificationsService.Companion.removeAllScheduledNotifications
30
+ import expo.modules.notifications.service.NotificationsService.Companion.removeScheduledNotification
31
+ import expo.modules.notifications.service.NotificationsService.Companion.schedule
32
+
33
+ open class NotificationScheduler : Module() {
34
+ protected open val schedulingContext: Context
35
+ get() = appContext.reactContext ?: throw Exceptions.ReactContextLost()
36
+
37
+ private val handler = Handler(Looper.getMainLooper())
38
+
39
+ protected fun createResultReceiver(body: ResultReceiverBody) =
40
+ createDefaultResultReceiver(handler, body)
41
+
42
+ override fun definition() = ModuleDefinition {
43
+ Name("ExpoNotificationScheduler")
44
+
45
+ AsyncFunction("getAllScheduledNotificationsAsync") { promise: Promise ->
46
+ getAllScheduledNotifications(
47
+ schedulingContext,
48
+ createResultReceiver { resultCode: Int, resultData: Bundle? ->
49
+ if (resultCode == NotificationsService.SUCCESS_CODE) {
50
+ val requests = resultData?.getParcelableArrayList<NotificationRequest>(NotificationsService.NOTIFICATION_REQUESTS_KEY)
51
+ if (requests == null) {
52
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_FETCH", "Failed to fetch scheduled notifications.", null)
53
+ } else {
54
+ promise.resolve(serializeScheduledNotificationRequests(requests))
55
+ }
56
+ } else {
57
+ val e = resultData?.getSerializable(NotificationsService.EXCEPTION_KEY) as Exception
58
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_FETCH", "Failed to fetch scheduled notifications.", e)
59
+ }
60
+ }
61
+ )
62
+ }
63
+
64
+ AsyncFunction("scheduleNotificationAsync") { identifier: String, notificationContentMap: ReadableArguments, triggerParams: ReadableArguments?, promise: Promise ->
65
+ try {
66
+ val content = ArgumentsNotificationContentBuilder(schedulingContext).setPayload(notificationContentMap).build()
67
+ val request = createNotificationRequest(
68
+ identifier,
69
+ content,
70
+ triggerFromParams(triggerParams)
71
+ )
72
+
73
+ schedule(
74
+ schedulingContext,
75
+ request,
76
+ createResultReceiver { resultCode: Int, resultData: Bundle? ->
77
+ if (resultCode == NotificationsService.SUCCESS_CODE) {
78
+ promise.resolve(identifier)
79
+ } else {
80
+ val e = resultData?.getSerializable(NotificationsService.EXCEPTION_KEY) as? Exception
81
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_SCHEDULE", "Failed to schedule the notification. ${e?.message}", e)
82
+ }
83
+ }
84
+ )
85
+ } catch (e: InvalidArgumentException) {
86
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_SCHEDULE", "Failed to schedule the notification. ${e.message}", e)
87
+ } catch (e: NullPointerException) {
88
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_SCHEDULE", "Failed to schedule the notification. Encountered unexpected null value. ${e.message}", e)
89
+ }
90
+ }
91
+
92
+ AsyncFunction("cancelScheduledNotificationAsync", this@NotificationScheduler::cancelScheduledNotificationAsync)
93
+
94
+ AsyncFunction("cancelAllScheduledNotificationsAsync", this@NotificationScheduler::cancelAllScheduledNotificationsAsync)
95
+
96
+ AsyncFunction("getNextTriggerDateAsync") { triggerParams: ReadableArguments?, promise: Promise ->
97
+ try {
98
+ val trigger = triggerFromParams(triggerParams)
99
+ if (trigger is SchedulableNotificationTrigger) {
100
+ val nextTriggerDate = trigger.nextTriggerDate()
101
+ if (nextTriggerDate == null) {
102
+ promise.resolve(null)
103
+ } else {
104
+ promise.resolve(nextTriggerDate.time.toDouble())
105
+ }
106
+ } else {
107
+ val triggerDescription = if (trigger == null) "null" else trigger.javaClass.name
108
+ val message = String.format("It is not possible to get next trigger date for triggers other than calendar-based. Provided trigger resulted in %s trigger.", triggerDescription)
109
+ promise.reject("ERR_NOTIFICATIONS_INVALID_CALENDAR_TRIGGER", message, null)
110
+ }
111
+ } catch (e: InvalidArgumentException) {
112
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_GET_NEXT_TRIGGER_DATE", "Failed to get next trigger date for the trigger. ${e.message}", e)
113
+ } catch (e: NullPointerException) {
114
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_GET_NEXT_TRIGGER_DATE", "Failed to get next trigger date for the trigger. Encountered unexpected null value. ${e.message}", e)
115
+ }
116
+ }
117
+ }
118
+
119
+ open fun cancelScheduledNotificationAsync(identifier: String, promise: Promise) {
120
+ removeScheduledNotification(
121
+ schedulingContext,
122
+ identifier,
123
+ createResultReceiver { resultCode: Int, resultData: Bundle? ->
124
+ if (resultCode == NotificationsService.SUCCESS_CODE) {
125
+ promise.resolve(null)
126
+ } else {
127
+ val e = resultData?.getSerializable(NotificationsService.EXCEPTION_KEY) as? Exception
128
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_CANCEL", "Failed to cancel notification.", e)
129
+ }
130
+ }
131
+ )
132
+ }
133
+
134
+ open fun cancelAllScheduledNotificationsAsync(promise: Promise) {
135
+ removeAllScheduledNotifications(
136
+ schedulingContext,
137
+ createResultReceiver { resultCode: Int, resultData: Bundle? ->
138
+ if (resultCode == NotificationsService.SUCCESS_CODE) {
139
+ promise.resolve(null)
140
+ } else {
141
+ val e = resultData?.getSerializable(NotificationsService.EXCEPTION_KEY) as? Exception
142
+ promise.reject("ERR_NOTIFICATIONS_FAILED_TO_CANCEL", "Failed to cancel all notifications.", e)
143
+ }
144
+ }
145
+ )
146
+ }
147
+
148
+ @Throws(InvalidArgumentException::class)
149
+ protected fun triggerFromParams(params: ReadableArguments?): NotificationTrigger? {
150
+ if (params == null) {
151
+ return null
152
+ }
153
+ val channelId = params.getString("channelId", null)
154
+ return when (val type = params.getString("type")) {
155
+ "timeInterval" -> {
156
+ val seconds = params["seconds"] as? Number
157
+ ?: throw InvalidArgumentException("Invalid value provided as interval of trigger.")
158
+
159
+ TimeIntervalTrigger(seconds.toLong(), params.getBoolean("repeats"), channelId)
160
+ }
161
+
162
+ "date" -> {
163
+ val timestamp = params["timestamp"] as? Number
164
+ ?: throw InvalidArgumentException("Invalid value provided as date of trigger.")
165
+
166
+ DateTrigger(timestamp.toLong(), channelId)
167
+ }
168
+
169
+ "daily" -> {
170
+ val hour = params["hour"] as? Number
171
+ val minute = params["minute"] as? Number
172
+
173
+ if (hour == null || minute == null) {
174
+ throw InvalidArgumentException("Invalid value(s) provided for daily trigger.")
175
+ }
176
+
177
+ DailyTrigger(
178
+ hour.toInt(),
179
+ minute.toInt(),
180
+ channelId
181
+ )
182
+ }
183
+
184
+ "weekly" -> {
185
+ val weekday = params["weekday"] as? Number
186
+ val hour = params["hour"] as? Number
187
+ val minute = params["minute"] as? Number
188
+
189
+ if (weekday == null || hour == null || minute == null) {
190
+ throw InvalidArgumentException("Invalid value(s) provided for weekly trigger.")
191
+ }
192
+ WeeklyTrigger(
193
+ weekday.toInt(),
194
+ hour.toInt(),
195
+ minute.toInt(),
196
+ channelId
197
+ )
198
+ }
199
+
200
+ "yearly" -> {
201
+ val day = params["day"] as? Number
202
+ val month = params["month"] as? Number
203
+ val hour = params["hour"] as? Number
204
+ val minute = params["minute"] as? Number
205
+
206
+ if (day == null || month == null || hour == null || minute == null) {
207
+ throw InvalidArgumentException("Invalid value(s) provided for yearly trigger.")
208
+ }
209
+
210
+ YearlyTrigger(
211
+ day.toInt(),
212
+ month.toInt(),
213
+ hour.toInt(),
214
+ minute.toInt(),
215
+ channelId
216
+ )
217
+ }
218
+
219
+ "channel" -> ChannelAwareTrigger(channelId)
220
+ else -> throw InvalidArgumentException("Trigger of type: $type is not supported on Android.")
221
+ }
222
+ }
223
+
224
+ protected open fun createNotificationRequest(
225
+ identifier: String,
226
+ content: NotificationContent,
227
+ notificationTrigger: NotificationTrigger?
228
+ ): NotificationRequest {
229
+ return NotificationRequest(identifier, content, notificationTrigger)
230
+ }
231
+
232
+ protected open fun serializeScheduledNotificationRequests(requests: Collection<NotificationRequest>): List<Bundle> {
233
+ return requests.map(NotificationSerializer::toBundle)
234
+ }
235
+ }
@@ -0,0 +1,49 @@
1
+ package expo.modules.notifications.notifications.triggers;
2
+
3
+ import android.os.Parcel;
4
+
5
+ import java.io.Serializable;
6
+
7
+ import androidx.annotation.Nullable;
8
+ import expo.modules.notifications.notifications.interfaces.NotificationTrigger;
9
+
10
+ public class ChannelAwareTrigger implements NotificationTrigger, Serializable {
11
+ @Nullable
12
+ private String mChannelId;
13
+
14
+ public ChannelAwareTrigger(@Nullable String channelId) {
15
+ mChannelId = channelId;
16
+ }
17
+
18
+ public ChannelAwareTrigger(Parcel in) {
19
+ mChannelId = in.readString();
20
+ }
21
+
22
+ @Override
23
+ public int describeContents() {
24
+ return 0;
25
+ }
26
+
27
+ @Override
28
+ public void writeToParcel(Parcel parcel, int i) {
29
+ parcel.writeString(mChannelId);
30
+ }
31
+
32
+ @Nullable
33
+ @Override
34
+ public String getNotificationChannel() {
35
+ return mChannelId;
36
+ }
37
+
38
+ public static final Creator<ChannelAwareTrigger> CREATOR = new Creator<ChannelAwareTrigger>() {
39
+ @Override
40
+ public ChannelAwareTrigger createFromParcel(Parcel in) {
41
+ return new ChannelAwareTrigger(in);
42
+ }
43
+
44
+ @Override
45
+ public ChannelAwareTrigger[] newArray(int size) {
46
+ return new ChannelAwareTrigger[size];
47
+ }
48
+ };
49
+ }