@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,209 @@
1
+ // Copyright 2018-present 650 Industries. All rights reserved.
2
+
3
+ #import <EXNotifications/EXNotificationCenterDelegate.h>
4
+ #import <ExpoModulesCore/EXDefines.h>
5
+ #import <EXNotifications/EXNotificationsDelegate.h>
6
+
7
+ @interface EXNotificationCenterDelegate ()
8
+
9
+ @property (nonatomic, strong) NSPointerArray *delegates;
10
+ @property (nonatomic, strong) NSMutableArray<UNNotificationResponse *> *pendingNotificationResponses;
11
+
12
+ @end
13
+
14
+ @implementation EXNotificationCenterDelegate
15
+
16
+ EX_REGISTER_SINGLETON_MODULE(NotificationCenterDelegate);
17
+
18
+ - (instancetype)init
19
+ {
20
+ if (self = [super init]) {
21
+ _delegates = [NSPointerArray weakObjectsPointerArray];
22
+ _pendingNotificationResponses = [NSMutableArray array];
23
+ }
24
+ return self;
25
+ }
26
+
27
+ # pragma mark - UIApplicationDelegate
28
+
29
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey,id> *)launchOptions
30
+ {
31
+ if ([UNUserNotificationCenter currentNotificationCenter].delegate) {
32
+ EXLogWarn(@"[expo-notifications] EXNotificationCenterDelegate encountered already present delegate of UNUserNotificationCenter: %@. "
33
+ "EXNotificationCenterDelegate will not overwrite the value not to break other features of your app. "
34
+ "In return, expo-notifications may not work properly. "
35
+ "To fix this problem either remove setting of the second delegate "
36
+ "or set the delegate to an instance of EXNotificationCenterDelegate manually afterwards.",
37
+ [UNUserNotificationCenter currentNotificationCenter].delegate);
38
+ return YES;
39
+ }
40
+
41
+ [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
42
+ return YES;
43
+ }
44
+
45
+ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
46
+ {
47
+ __block int delegatesCalled = 0;
48
+ __block int delegatesCompleted = 0;
49
+ __block BOOL delegatingCompleted = NO;
50
+ __block BOOL delegatesFailed = 0;
51
+ __block UIBackgroundFetchResult resultSum = UIBackgroundFetchResultNoData;
52
+ __block void (^completionHandlerCaller)(void) = ^{
53
+ if (delegatingCompleted && delegatesCompleted == delegatesCalled) {
54
+ if (delegatesCompleted == delegatesFailed) {
55
+ // If all delegates failed to fetch result, let's let the OS know about that
56
+ completionHandler(UIBackgroundFetchResultFailed);
57
+ } else {
58
+ // If at least one succeeded, let's take it as read and respond with that result.
59
+ completionHandler(resultSum);
60
+ }
61
+ }
62
+ };
63
+
64
+ for (int i = 0; i < _delegates.count; i++) {
65
+ id pointer = [_delegates pointerAtIndex:i];
66
+ if ([pointer respondsToSelector:@selector(application:didReceiveRemoteNotification:fetchCompletionHandler:)]) {
67
+ [pointer application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:^(UIBackgroundFetchResult result) {
68
+ @synchronized (self) {
69
+ if (result == UIBackgroundFetchResultFailed) {
70
+ delegatesFailed += 1;
71
+ } else if (result == UIBackgroundFetchResultNewData) {
72
+ resultSum = UIBackgroundFetchResultNewData;
73
+ }
74
+ delegatesCompleted += 1;
75
+ completionHandlerCaller();
76
+ }
77
+ }];
78
+ @synchronized (self) {
79
+ delegatesCalled += 1;
80
+ }
81
+ }
82
+ }
83
+ @synchronized (self) {
84
+ delegatingCompleted = YES;
85
+ completionHandlerCaller();
86
+ }
87
+ }
88
+
89
+ # pragma mark - UNUserNotificationCenterDelegate
90
+
91
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
92
+ {
93
+ __block int delegatesCalled = 0;
94
+ __block int delegatesCompleted = 0;
95
+ __block BOOL delegatingCompleted = NO;
96
+ __block UNNotificationPresentationOptions optionsSum = UNNotificationPresentationOptionNone;
97
+ __block void (^completionHandlerCaller)(void) = ^{
98
+ if (delegatingCompleted && delegatesCompleted == delegatesCalled) {
99
+ completionHandler(optionsSum);
100
+ }
101
+ };
102
+
103
+ for (int i = 0; i < _delegates.count; i++) {
104
+ id pointer = [_delegates pointerAtIndex:i];
105
+ if ([pointer respondsToSelector:@selector(userNotificationCenter:willPresentNotification:withCompletionHandler:)]) {
106
+ [pointer userNotificationCenter:center willPresentNotification:notification withCompletionHandler:^(UNNotificationPresentationOptions options) {
107
+ @synchronized (self) {
108
+ delegatesCompleted += 1;
109
+ optionsSum = optionsSum | options;
110
+ completionHandlerCaller();
111
+ }
112
+ }];
113
+ @synchronized (self) {
114
+ delegatesCalled += 1;
115
+ }
116
+ }
117
+ }
118
+ @synchronized (self) {
119
+ delegatingCompleted = YES;
120
+ completionHandlerCaller();
121
+ }
122
+ }
123
+
124
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
125
+ {
126
+ // Save response to pending responses array if none of the handlers will handle it.
127
+ BOOL responseWillBeHandledByAppropriateDelegate = NO;
128
+ for (int i = 0; i < _delegates.count; i++) {
129
+ id pointer = [_delegates pointerAtIndex:i];
130
+ if ([pointer respondsToSelector:@selector(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:)]) {
131
+ responseWillBeHandledByAppropriateDelegate = YES;
132
+ break;
133
+ }
134
+ }
135
+ if (!responseWillBeHandledByAppropriateDelegate) {
136
+ [_pendingNotificationResponses addObject:response];
137
+ }
138
+
139
+ __block int delegatesCalled = 0;
140
+ __block int delegatesCompleted = 0;
141
+ __block BOOL delegatingCompleted = NO;
142
+ void (^completionHandlerCaller)(void) = ^{
143
+ if (delegatingCompleted && delegatesCompleted == delegatesCalled) {
144
+ completionHandler();
145
+ }
146
+ };
147
+
148
+ for (int i = 0; i < _delegates.count; i++) {
149
+ id pointer = [_delegates pointerAtIndex:i];
150
+ if ([pointer respondsToSelector:@selector(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:)]) {
151
+ [pointer userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:^{
152
+ @synchronized (self) {
153
+ delegatesCompleted += 1;
154
+ completionHandlerCaller();
155
+ }
156
+ }];
157
+ @synchronized (self) {
158
+ delegatesCalled += 1;
159
+ }
160
+ }
161
+ }
162
+ @synchronized (self) {
163
+ delegatingCompleted = YES;
164
+ completionHandlerCaller();
165
+ }
166
+ }
167
+
168
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification
169
+ {
170
+ if (@available(iOS 12.0, *)) {
171
+ for (int i = 0; i < _delegates.count; i++) {
172
+ id pointer = [_delegates pointerAtIndex:i];
173
+ if ([pointer respondsToSelector:@selector(userNotificationCenter:openSettingsForNotification:)]) {
174
+ [pointer userNotificationCenter:center openSettingsForNotification:notification];
175
+ }
176
+ }
177
+ }
178
+ }
179
+
180
+ # pragma mark - EXNotificationCenterDelegate
181
+
182
+ - (void)addDelegate:(id<EXNotificationsDelegate>)delegate
183
+ {
184
+ [_delegates addPointer:(__bridge void * _Nullable)(delegate)];
185
+ if ([delegate respondsToSelector:@selector(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:)]) {
186
+ UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
187
+ for (UNNotificationResponse *response in _pendingNotificationResponses) {
188
+ [delegate userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:^{
189
+ // completion handler doesn't need to do anything
190
+ }];
191
+ }
192
+ }
193
+ }
194
+
195
+ - (void)removeDelegate:(id<EXNotificationsDelegate>)delegate
196
+ {
197
+ for (int i = 0; i < _delegates.count; i++) {
198
+ id pointer = [_delegates pointerAtIndex:i];
199
+ if (pointer == (__bridge void * _Nullable)(delegate) || !pointer) {
200
+ [_delegates removePointerAtIndex:i];
201
+ i--;
202
+ }
203
+ }
204
+ // compact doesn't work, that's why we need the `|| !pointer` above
205
+ // http://www.openradar.me/15396578
206
+ [_delegates compact];
207
+ }
208
+
209
+ @end
@@ -0,0 +1,16 @@
1
+ // Copyright 2018-present 650 Industries. All rights reserved.
2
+
3
+ #import <UserNotifications/UserNotifications.h>
4
+
5
+ NS_ASSUME_NONNULL_BEGIN
6
+
7
+ @interface EXNotificationSerializer : NSObject
8
+
9
+ + (NSDictionary *)serializedNotification:(UNNotification *)notification;
10
+ + (NSDictionary *)serializedNotificationRequest:(UNNotificationRequest *)notificationRequest;
11
+ + (NSDictionary *)serializedNotificationResponse:(UNNotificationResponse *)notificationResponse;
12
+ + (NSDictionary *)serializedNotificationContent:(UNNotificationRequest *)request;
13
+
14
+ @end
15
+
16
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,232 @@
1
+ // Copyright 2018-present 650 Industries. All rights reserved.
2
+
3
+ #import <EXNotifications/EXNotificationSerializer.h>
4
+ #import <CoreLocation/CoreLocation.h>
5
+
6
+ NS_ASSUME_NONNULL_BEGIN
7
+
8
+ static NSString * const EXNotificationResponseDefaultActionIdentifier = @"expo.modules.notifications.actions.DEFAULT";
9
+
10
+ @implementation EXNotificationSerializer
11
+
12
+ + (NSDictionary *)serializedNotificationResponse:(UNNotificationResponse *)response
13
+ {
14
+ NSMutableDictionary *serializedResponse = [NSMutableDictionary dictionary];
15
+ NSString *actionIdentifier = response.actionIdentifier;
16
+ if ([UNNotificationDefaultActionIdentifier isEqualToString:actionIdentifier]) {
17
+ actionIdentifier = EXNotificationResponseDefaultActionIdentifier;
18
+ }
19
+ serializedResponse[@"actionIdentifier"] = actionIdentifier;
20
+ serializedResponse[@"notification"] = [self serializedNotification:response.notification];
21
+ if ([response isKindOfClass:[UNTextInputNotificationResponse class]]) {
22
+ UNTextInputNotificationResponse *textInputResponse = (UNTextInputNotificationResponse *)response;
23
+ serializedResponse[@"userText"] = textInputResponse.userText ?: [NSNull null];
24
+ }
25
+ return serializedResponse;
26
+ }
27
+
28
+ + (NSDictionary *)serializedNotification:(UNNotification *)notification
29
+ {
30
+ NSMutableDictionary *serializedNotification = [NSMutableDictionary dictionary];
31
+ serializedNotification[@"request"] = [self serializedNotificationRequest:notification.request];
32
+ serializedNotification[@"date"] = @(notification.date.timeIntervalSince1970);
33
+ return serializedNotification;
34
+ }
35
+
36
+ + (NSDictionary *)serializedNotificationRequest:(UNNotificationRequest *)request
37
+ {
38
+ NSMutableDictionary *serializedRequest = [NSMutableDictionary dictionary];
39
+ serializedRequest[@"identifier"] = request.identifier;
40
+ serializedRequest[@"content"] = [self serializedNotificationContent:request];
41
+ serializedRequest[@"trigger"] = [self serializedNotificationTrigger:request];
42
+ return serializedRequest;
43
+ }
44
+
45
+ + (NSDictionary *)serializedNotificationContent:(UNNotificationRequest *)request
46
+ {
47
+ UNNotificationContent *content = request.content;
48
+ NSMutableDictionary *serializedContent = [NSMutableDictionary dictionary];
49
+ serializedContent[@"title"] = content.title ?: [NSNull null];
50
+ serializedContent[@"subtitle"] = content.subtitle ?: [NSNull null];
51
+ serializedContent[@"body"] = content.body ?: [NSNull null];
52
+ serializedContent[@"badge"] = content.badge ?: [NSNull null];
53
+ serializedContent[@"sound"] = [self serializedNotificationSound:content.sound] ?: [NSNull null];
54
+ serializedContent[@"launchImageName"] = content.launchImageName ?: [NSNull null];
55
+ serializedContent[@"data"] = [self serializedNotificationData:request] ?: [NSNull null];
56
+ serializedContent[@"attachments"] = [self serializedNotificationAttachments:content.attachments];
57
+
58
+ if (@available(iOS 12.0, *)) {
59
+ serializedContent[@"summaryArgument"] = content.summaryArgument ?: [NSNull null];
60
+ serializedContent[@"summaryArgumentCount"] = @(content.summaryArgumentCount);
61
+ }
62
+ serializedContent[@"categoryIdentifier"] = content.categoryIdentifier ? content.categoryIdentifier : [NSNull null];
63
+ serializedContent[@"threadIdentifier"] = content.threadIdentifier ?: [NSNull null];
64
+ if (@available(iOS 13.0, *)) {
65
+ serializedContent[@"targetContentIdentifier"] = content.targetContentIdentifier ?: [NSNull null];
66
+ }
67
+
68
+ return serializedContent;
69
+ }
70
+
71
+ + (NSDictionary *)serializedNotificationData:(UNNotificationRequest *)request
72
+ {
73
+ BOOL isRemote = [request.trigger isKindOfClass:[UNPushNotificationTrigger class]];
74
+ return isRemote ? request.content.userInfo[@"body"] : request.content.userInfo;
75
+ }
76
+
77
+ + (NSString *)serializedNotificationSound:(UNNotificationSound *)sound
78
+ {
79
+ // nil compared to defaultCriticalSound returns true
80
+ if (!sound) {
81
+ return nil;
82
+ }
83
+
84
+ if (@available(iOS 12.0, *)) {
85
+ if ([[UNNotificationSound defaultCriticalSound] isEqual:sound]) {
86
+ return @"defaultCritical";
87
+ }
88
+ }
89
+
90
+ if ([[UNNotificationSound defaultSound] isEqual:sound]) {
91
+ return @"default";
92
+ }
93
+
94
+ return @"custom";
95
+ }
96
+
97
+ + (NSArray *)serializedNotificationAttachments:(NSArray<UNNotificationAttachment *> *)attachments
98
+ {
99
+ NSMutableArray *serializedAttachments = [NSMutableArray array];
100
+ for (UNNotificationAttachment *attachment in attachments) {
101
+ [serializedAttachments addObject:[self serializedNotificationAttachment:attachment]];
102
+ }
103
+ return serializedAttachments;
104
+ }
105
+
106
+ + (NSDictionary *)serializedNotificationAttachment:(UNNotificationAttachment *)attachment
107
+ {
108
+ NSMutableDictionary *serializedAttachment = [NSMutableDictionary dictionary];
109
+ serializedAttachment[@"identifier"] = attachment.identifier ?: [NSNull null];
110
+ serializedAttachment[@"url"] = attachment.URL.absoluteString ?: [NSNull null];
111
+ serializedAttachment[@"type"] = attachment.type ?: [NSNull null];
112
+ return serializedAttachment;
113
+ }
114
+
115
+ + (NSDictionary *)serializedNotificationTrigger:(UNNotificationRequest *)request
116
+ {
117
+ UNNotificationTrigger *trigger = request.trigger;
118
+ NSMutableDictionary *serializedTrigger = [NSMutableDictionary dictionary];
119
+ serializedTrigger[@"class"] = NSStringFromClass(trigger.class);
120
+ if ([trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
121
+ serializedTrigger[@"type"] = @"push";
122
+ serializedTrigger[@"payload"] = request.content.userInfo;
123
+ } else if ([trigger isKindOfClass:[UNCalendarNotificationTrigger class]]) {
124
+ serializedTrigger[@"type"] = @"calendar";
125
+ serializedTrigger[@"repeats"] = @(trigger.repeats);
126
+ UNCalendarNotificationTrigger *calendarTrigger = (UNCalendarNotificationTrigger *)trigger;
127
+ serializedTrigger[@"dateComponents"] = [self serializedDateComponents:calendarTrigger.dateComponents];
128
+ #if !(TARGET_OS_MACCATALYST)
129
+ } else if ([trigger isKindOfClass:[UNLocationNotificationTrigger class]]) {
130
+ serializedTrigger[@"type"] = @"location";
131
+ serializedTrigger[@"repeats"] = @(trigger.repeats);
132
+ UNLocationNotificationTrigger *locationTrigger = (UNLocationNotificationTrigger *)trigger;
133
+ serializedTrigger[@"region"] = [self serializedRegion:locationTrigger.region];
134
+ #endif
135
+ } else if ([trigger isKindOfClass:[UNTimeIntervalNotificationTrigger class]]) {
136
+ serializedTrigger[@"type"] = @"timeInterval";
137
+ UNTimeIntervalNotificationTrigger *timeIntervalTrigger = (UNTimeIntervalNotificationTrigger *)trigger;
138
+ serializedTrigger[@"seconds"] = @(timeIntervalTrigger.timeInterval);
139
+ serializedTrigger[@"repeats"] = @(trigger.repeats);
140
+ } else {
141
+ serializedTrigger[@"type"] = @"unknown";
142
+ }
143
+ return serializedTrigger;
144
+ }
145
+
146
+ + (NSDictionary *)serializedDateComponents:(NSDateComponents *)dateComponents
147
+ {
148
+ NSMutableDictionary *serializedComponents = [NSMutableDictionary dictionary];
149
+ NSArray<NSNumber *> *autoConvertedUnits = [[self calendarUnitsConversionMap] allKeys];
150
+ for (NSNumber *calendarUnitNumber in autoConvertedUnits) {
151
+ NSCalendarUnit calendarUnit = [calendarUnitNumber unsignedIntegerValue];
152
+ NSInteger unitValue = [dateComponents valueForComponent:calendarUnit];
153
+ if (unitValue != NSDateComponentUndefined) {
154
+ serializedComponents[[self keyForCalendarUnit:calendarUnit]] = @([dateComponents valueForComponent:calendarUnit]);
155
+ }
156
+ }
157
+ serializedComponents[@"calendar"] = dateComponents.calendar.calendarIdentifier ?: [NSNull null];
158
+ serializedComponents[@"timeZone"] = dateComponents.timeZone.description ?: [NSNull null];
159
+ serializedComponents[@"isLeapMonth"] = @(dateComponents.isLeapMonth);
160
+ return serializedComponents;
161
+ }
162
+
163
+ + (NSDictionary *)calendarUnitsConversionMap
164
+ {
165
+ static NSDictionary *keysMap = nil;
166
+ if (!keysMap) {
167
+ keysMap = @{
168
+ @(NSCalendarUnitEra): @"era",
169
+ @(NSCalendarUnitYear): @"year",
170
+ @(NSCalendarUnitMonth): @"month",
171
+ @(NSCalendarUnitDay): @"day",
172
+ @(NSCalendarUnitHour): @"hour",
173
+ @(NSCalendarUnitMinute): @"minute",
174
+ @(NSCalendarUnitSecond): @"second",
175
+ @(NSCalendarUnitWeekday): @"weekday",
176
+ @(NSCalendarUnitWeekdayOrdinal): @"weekdayOrdinal",
177
+ @(NSCalendarUnitQuarter): @"quarter",
178
+ @(NSCalendarUnitWeekOfMonth): @"weekOfMonth",
179
+ @(NSCalendarUnitWeekOfYear): @"weekOfYear",
180
+ @(NSCalendarUnitYearForWeekOfYear): @"yearForWeekOfYear",
181
+ @(NSCalendarUnitNanosecond): @"nanosecond"
182
+ // NSCalendarUnitCalendar and NSCalendarUnitTimeZone
183
+ // should be handled separately
184
+ };
185
+ }
186
+ return keysMap;
187
+ }
188
+
189
+ + (NSString *)keyForCalendarUnit:(NSCalendarUnit)calendarUnit
190
+ {
191
+ return [self calendarUnitsConversionMap][@(calendarUnit)];
192
+ }
193
+
194
+ + (NSDictionary *)serializedRegion:(CLRegion *)region
195
+ {
196
+ NSMutableDictionary *serializedRegion = [NSMutableDictionary dictionary];
197
+ serializedRegion[@"identifier"] = region.identifier;
198
+ serializedRegion[@"notifyOnEntry"] = @(region.notifyOnEntry);
199
+ serializedRegion[@"notifyOnExit"] = @(region.notifyOnExit);
200
+ if ([region isKindOfClass:[CLCircularRegion class]]) {
201
+ serializedRegion[@"type"] = @"circular";
202
+ CLCircularRegion *circularRegion = (CLCircularRegion *)region;
203
+ NSDictionary *serializedCenter = @{
204
+ @"latitude": @(circularRegion.center.latitude),
205
+ @"longitude": @(circularRegion.center.longitude)
206
+ };
207
+ serializedRegion[@"center"] = serializedCenter;
208
+ serializedRegion[@"radius"] = @(circularRegion.radius);
209
+ } else if ([region isKindOfClass:[CLBeaconRegion class]]) {
210
+ serializedRegion[@"type"] = @"beacon";
211
+ CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region;
212
+ serializedRegion[@"notifyEntryStateOnDisplay"] = @(beaconRegion.notifyEntryStateOnDisplay);
213
+ serializedRegion[@"major"] = beaconRegion.major ?: [NSNull null];
214
+ serializedRegion[@"minor"] = beaconRegion.minor ?: [NSNull null];
215
+ if (@available(iOS 13.0, *)) {
216
+ serializedRegion[@"uuid"] = beaconRegion.UUID;
217
+ NSDictionary *serializedConstraint = @{
218
+ @"uuid": beaconRegion.beaconIdentityConstraint.UUID,
219
+ @"major": beaconRegion.beaconIdentityConstraint.major ?: [NSNull null],
220
+ @"minor": beaconRegion.beaconIdentityConstraint.minor ?: [NSNull null],
221
+ };
222
+ serializedRegion[@"beaconIdentityConstraint"] = serializedConstraint;
223
+ }
224
+ } else {
225
+ serializedRegion[@"type"] = @"unknown";
226
+ }
227
+ return serializedRegion;
228
+ }
229
+
230
+ @end
231
+
232
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,27 @@
1
+ // Copyright 2018-present 650 Industries. All rights reserved.
2
+
3
+ #import <Foundation/Foundation.h>
4
+ #import <UIKit/UIKit.h>
5
+ #import <UserNotifications/UserNotifications.h>
6
+
7
+ NS_ASSUME_NONNULL_BEGIN
8
+
9
+ @protocol EXNotificationsDelegate <NSObject>
10
+
11
+ @optional
12
+
13
+ # pragma mark - UIApplicationDelegate
14
+
15
+ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
16
+
17
+ # pragma mark - UNUserNotificationCenterDelegate
18
+
19
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler;
20
+
21
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler;
22
+
23
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification;
24
+
25
+ @end
26
+
27
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,17 @@
1
+ // Copyright 2018-present 650 Industries. All rights reserved.
2
+
3
+ #import <ExpoModulesCore/EXExportedModule.h>
4
+ #import <ExpoModulesCore/EXEventEmitter.h>
5
+ #import <ExpoModulesCore/EXModuleRegistryConsumer.h>
6
+ #import <ExpoModulesCore/EXEventEmitterService.h>
7
+
8
+ #import <EXNotifications/EXNotificationsDelegate.h>
9
+
10
+ static NSString * const onDidReceiveNotification = @"onDidReceiveNotification";
11
+ static NSString * const onDidReceiveNotificationResponse = @"onDidReceiveNotificationResponse";
12
+
13
+ @interface EXNotificationsEmitter : EXExportedModule <EXEventEmitter, EXModuleRegistryConsumer, EXNotificationsDelegate>
14
+
15
+ @property (nonatomic, weak, readonly) id<EXEventEmitterService> eventEmitter;
16
+
17
+ @end
@@ -0,0 +1,114 @@
1
+ // Copyright 2018-present 650 Industries. All rights reserved.
2
+
3
+ #import <EXNotifications/EXNotificationsEmitter.h>
4
+ #import <EXNotifications/EXNotificationSerializer.h>
5
+ #import <EXNotifications/EXNotificationCenterDelegate.h>
6
+
7
+ #import <ExpoModulesCore/EXEventEmitterService.h>
8
+
9
+ @interface EXNotificationsEmitter ()
10
+
11
+ @property (nonatomic, weak) id<EXNotificationCenterDelegate> notificationCenterDelegate;
12
+
13
+ @property (nonatomic, assign) BOOL isBeingObserved;
14
+ @property (nonatomic, assign) BOOL isListening;
15
+
16
+ @property (nonatomic, weak) id<EXEventEmitterService> eventEmitter;
17
+
18
+ @property (nonatomic, strong) UNNotificationResponse *lastNotificationResponse;
19
+
20
+ @end
21
+
22
+ @implementation EXNotificationsEmitter
23
+
24
+ EX_EXPORT_MODULE(ExpoNotificationsEmitter);
25
+
26
+ EX_EXPORT_METHOD_AS(getLastNotificationResponseAsync,
27
+ getLastNotificationResponseAsyncWithResolver:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject)
28
+ {
29
+ resolve(_lastNotificationResponse ? [self serializedNotificationResponse:_lastNotificationResponse] : [NSNull null]);
30
+ }
31
+
32
+ # pragma mark - EXModuleRegistryConsumer
33
+
34
+ - (void)setModuleRegistry:(EXModuleRegistry *)moduleRegistry
35
+ {
36
+ _eventEmitter = [moduleRegistry getModuleImplementingProtocol:@protocol(EXEventEmitterService)];
37
+ _notificationCenterDelegate = [moduleRegistry getSingletonModuleForName:@"NotificationCenterDelegate"];
38
+ }
39
+
40
+ # pragma mark - EXEventEmitter
41
+
42
+ - (NSArray<NSString *> *)supportedEvents
43
+ {
44
+ return @[onDidReceiveNotification, onDidReceiveNotificationResponse];
45
+ }
46
+
47
+ - (void)startObserving
48
+ {
49
+ [self setIsBeingObserved:YES];
50
+ }
51
+
52
+ - (void)stopObserving
53
+ {
54
+ [self setIsBeingObserved:NO];
55
+ }
56
+
57
+ - (void)setIsBeingObserved:(BOOL)isBeingObserved
58
+ {
59
+ _isBeingObserved = isBeingObserved;
60
+ BOOL shouldListen = _isBeingObserved;
61
+ if (shouldListen && !_isListening) {
62
+ [_notificationCenterDelegate addDelegate:self];
63
+ _isListening = YES;
64
+ } else if (!shouldListen && _isListening) {
65
+ [_notificationCenterDelegate removeDelegate:self];
66
+ _isListening = NO;
67
+ }
68
+ }
69
+
70
+ # pragma mark - EXNotificationsDelegate
71
+
72
+ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
73
+ {
74
+ // Background task execution would happen here.
75
+ completionHandler(UIBackgroundFetchResultNoData);
76
+ }
77
+
78
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
79
+ {
80
+ _lastNotificationResponse = response;
81
+ [self sendEventWithName:onDidReceiveNotificationResponse body:[self serializedNotificationResponse:response]];
82
+ completionHandler();
83
+ }
84
+
85
+ - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
86
+ {
87
+ [self sendEventWithName:onDidReceiveNotification body:[self serializedNotification:notification]];
88
+ completionHandler(UNNotificationPresentationOptionNone);
89
+ }
90
+
91
+ - (void)sendEventWithName:(NSString *)eventName body:(id)body
92
+ {
93
+ // Silence React Native warning: "Sending ... with no listeners registered."
94
+ // See: https://github.com/expo/expo/pull/10883#pullrequestreview-529183413
95
+ // While in practice we don't need to verify this, as as of the end of 2020
96
+ // we wouldn't send any event to JS if we weren't being observed because
97
+ // we wouldn't be subscribed to the notification center delegate it's nice
98
+ // to be sure this problem won't ever arise.
99
+ if (_isBeingObserved) {
100
+ [_eventEmitter sendEventWithName:eventName body:body];
101
+ }
102
+ }
103
+
104
+ - (NSDictionary *)serializedNotification:(UNNotification *)notification
105
+ {
106
+ return [EXNotificationSerializer serializedNotification:notification];
107
+ }
108
+
109
+ - (NSDictionary *)serializedNotificationResponse:(UNNotificationResponse *)notificationResponse
110
+ {
111
+ return [EXNotificationSerializer serializedNotificationResponse:notificationResponse];
112
+ }
113
+
114
+ @end
@@ -0,0 +1,12 @@
1
+ // Copyright 2018-present 650 Industries. All rights reserved.
2
+
3
+ #import <ExpoModulesCore/EXExportedModule.h>
4
+ #import <ExpoModulesCore/EXEventEmitter.h>
5
+ #import <ExpoModulesCore/EXModuleRegistryConsumer.h>
6
+
7
+ #import <EXNotifications/EXNotificationsDelegate.h>
8
+ #import <EXNotifications/EXSingleNotificationHandlerTask.h>
9
+
10
+ @interface EXNotificationsHandlerModule : EXExportedModule <EXEventEmitter, EXModuleRegistryConsumer, EXNotificationsDelegate, EXSingleNotificationHandlerTaskDelegate>
11
+
12
+ @end