@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,119 @@
1
+ package expo.modules.notifications.notifications;
2
+
3
+ import expo.modules.core.interfaces.SingletonModule;
4
+
5
+ import java.lang.ref.WeakReference;
6
+ import java.util.ArrayList;
7
+ import java.util.Collection;
8
+ import java.util.Iterator;
9
+ import java.util.WeakHashMap;
10
+
11
+ import expo.modules.notifications.notifications.interfaces.NotificationListener;
12
+ import expo.modules.notifications.notifications.model.Notification;
13
+ import expo.modules.notifications.notifications.model.NotificationResponse;
14
+ import expo.modules.notifications.service.delegates.ExpoHandlingDelegate;
15
+
16
+ public class NotificationManager implements SingletonModule, expo.modules.notifications.notifications.interfaces.NotificationManager {
17
+ private static final String SINGLETON_NAME = "NotificationManager";
18
+
19
+ /**
20
+ * A weak map of listeners -> reference. Used to check quickly whether given listener
21
+ * is already registered and to iterate over on new token.
22
+ */
23
+ private WeakHashMap<NotificationListener, WeakReference<NotificationListener>> mListenerReferenceMap;
24
+ private Collection<NotificationResponse> mPendingNotificationResponses = new ArrayList<>();
25
+
26
+ public NotificationManager() {
27
+ mListenerReferenceMap = new WeakHashMap<>();
28
+
29
+ // Registers this singleton instance in static ExpoHandlingDelegate listeners collection.
30
+ // Since it doesn't hold strong reference to the object this should be safe.
31
+ ExpoHandlingDelegate.Companion.addListener(this);
32
+ }
33
+
34
+ @Override
35
+ public String getName() {
36
+ return SINGLETON_NAME;
37
+ }
38
+
39
+ /**
40
+ * Registers a {@link NotificationListener} by adding a {@link WeakReference} to
41
+ * the {@link NotificationManager#mListenerReferenceMap} map.
42
+ *
43
+ * @param listener Listener to be notified of new messages.
44
+ */
45
+ @Override
46
+ public void addListener(NotificationListener listener) {
47
+ // Check if the listener is already registered
48
+ if (!mListenerReferenceMap.containsKey(listener)) {
49
+ WeakReference<NotificationListener> listenerReference = new WeakReference<>(listener);
50
+ mListenerReferenceMap.put(listener, listenerReference);
51
+ if (!mPendingNotificationResponses.isEmpty()) {
52
+ for (NotificationResponse pendingResponse : mPendingNotificationResponses) {
53
+ listener.onNotificationResponseReceived(pendingResponse);
54
+ }
55
+ }
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Unregisters a {@link NotificationListener} by removing the {@link WeakReference} to the listener
61
+ * from the {@link NotificationManager#mListenerReferenceMap} map.
62
+ *
63
+ * @param listener Listener previously registered with {@link NotificationManager#addListener(NotificationListener)}.
64
+ */
65
+ @Override
66
+ public void removeListener(NotificationListener listener) {
67
+ mListenerReferenceMap.remove(listener);
68
+ }
69
+
70
+ /**
71
+ * Used by {@link expo.modules.notifications.service.delegates.ExpoSchedulingDelegate} to notify of new messages.
72
+ * Calls {@link NotificationListener#onNotificationReceived(Notification)} on all values
73
+ * of {@link NotificationManager#mListenerReferenceMap}.
74
+ *
75
+ * @param notification Notification received
76
+ */
77
+ public void onNotificationReceived(Notification notification) {
78
+ for (WeakReference<NotificationListener> listenerReference : mListenerReferenceMap.values()) {
79
+ NotificationListener listener = listenerReference.get();
80
+ if (listener != null) {
81
+ listener.onNotificationReceived(notification);
82
+ }
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Used by {@link expo.modules.notifications.service.delegates.ExpoSchedulingDelegate} to notify of new notification responses.
88
+ * Calls {@link NotificationListener#onNotificationResponseReceived(NotificationResponse)} on all values
89
+ * of {@link NotificationManager#mListenerReferenceMap}.
90
+ *
91
+ * @param response Notification response received
92
+ */
93
+ public void onNotificationResponseReceived(NotificationResponse response) {
94
+ if (mListenerReferenceMap.isEmpty()) {
95
+ mPendingNotificationResponses.add(response);
96
+ } else {
97
+ for (WeakReference<NotificationListener> listenerReference : mListenerReferenceMap.values()) {
98
+ NotificationListener listener = listenerReference.get();
99
+ if (listener != null) {
100
+ listener.onNotificationResponseReceived(response);
101
+ }
102
+ }
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Used by {@link expo.modules.notifications.service.delegates.ExpoSchedulingDelegate} to notify of message deletion event.
108
+ * Calls {@link NotificationListener#onNotificationsDropped()} on all values
109
+ * of {@link NotificationManager#mListenerReferenceMap}.
110
+ */
111
+ public void onNotificationsDropped() {
112
+ for (WeakReference<NotificationListener> listenerReference : mListenerReferenceMap.values()) {
113
+ NotificationListener listener = listenerReference.get();
114
+ if (listener != null) {
115
+ listener.onNotificationsDropped();
116
+ }
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,202 @@
1
+ package expo.modules.notifications.notifications;
2
+
3
+ import android.os.Build;
4
+ import android.os.Bundle;
5
+
6
+ import androidx.annotation.NonNull;
7
+ import androidx.annotation.Nullable;
8
+
9
+ import org.json.JSONArray;
10
+ import org.json.JSONObject;
11
+ import expo.modules.core.arguments.MapArguments;
12
+
13
+ import java.util.ArrayList;
14
+ import java.util.HashMap;
15
+ import java.util.Iterator;
16
+ import java.util.List;
17
+ import java.util.Map;
18
+ import java.util.Set;
19
+
20
+ import expo.modules.notifications.notifications.interfaces.NotificationTrigger;
21
+ import expo.modules.notifications.notifications.model.Notification;
22
+ import expo.modules.notifications.notifications.model.NotificationAction;
23
+ import expo.modules.notifications.notifications.model.NotificationCategory;
24
+ import expo.modules.notifications.notifications.model.NotificationContent;
25
+ import expo.modules.notifications.notifications.model.NotificationRequest;
26
+ import expo.modules.notifications.notifications.model.NotificationResponse;
27
+ import expo.modules.notifications.notifications.model.TextInputNotificationAction;
28
+ import expo.modules.notifications.notifications.model.TextInputNotificationResponse;
29
+ import expo.modules.notifications.notifications.model.triggers.FirebaseNotificationTrigger;
30
+
31
+ import expo.modules.notifications.notifications.triggers.ChannelAwareTrigger;
32
+ import expo.modules.notifications.notifications.triggers.DailyTrigger;
33
+ import expo.modules.notifications.notifications.triggers.DateTrigger;
34
+ import expo.modules.notifications.notifications.triggers.TimeIntervalTrigger;
35
+ import expo.modules.notifications.notifications.triggers.WeeklyTrigger;
36
+ import expo.modules.notifications.notifications.triggers.YearlyTrigger;
37
+
38
+ public class NotificationSerializer {
39
+ public static Bundle toBundle(NotificationResponse response) {
40
+ Bundle serializedResponse = new Bundle();
41
+ serializedResponse.putString("actionIdentifier", response.getActionIdentifier());
42
+ serializedResponse.putBundle("notification", toBundle(response.getNotification()));
43
+ if (response instanceof TextInputNotificationResponse) {
44
+ serializedResponse.putString("userText", ((TextInputNotificationResponse) response).getUserText());
45
+ }
46
+ return serializedResponse;
47
+ }
48
+
49
+ public static Bundle toBundle(Notification notification) {
50
+ Bundle serializedNotification = new Bundle();
51
+ serializedNotification.putBundle("request", toBundle(notification.getNotificationRequest()));
52
+ serializedNotification.putLong("date", notification.getDate().getTime());
53
+ return serializedNotification;
54
+ }
55
+
56
+ public static Bundle toBundle(NotificationRequest request) {
57
+ Bundle serializedRequest = new Bundle();
58
+ serializedRequest.putString("identifier", request.getIdentifier());
59
+ serializedRequest.putBundle("content", toBundle(request.getContent()));
60
+ serializedRequest.putBundle("trigger", toBundle(request.getTrigger()));
61
+ return serializedRequest;
62
+ }
63
+
64
+ public static Bundle toBundle(NotificationContent content) {
65
+ Bundle serializedContent = new Bundle();
66
+ serializedContent.putString("title", content.getTitle());
67
+ serializedContent.putString("subtitle", content.getSubtitle());
68
+ serializedContent.putString("body", content.getText());
69
+ if (content.getColor() != null) {
70
+ serializedContent.putString("color", String.format("#%08X", content.getColor().intValue()));
71
+ }
72
+ serializedContent.putBundle("data", toBundle(content.getBody()));
73
+ if (content.getBadgeCount() != null) {
74
+ serializedContent.putInt("badge", content.getBadgeCount().intValue());
75
+ } else {
76
+ serializedContent.putString("badge", null);
77
+ }
78
+ if (content.shouldPlayDefaultSound()) {
79
+ serializedContent.putString("sound", "default");
80
+ } else if (content.getSound() != null) {
81
+ serializedContent.putString("sound", "custom");
82
+ } else {
83
+ serializedContent.putString("sound", null);
84
+ }
85
+ if (content.getPriority() != null) {
86
+ serializedContent.putString("priority", content.getPriority().getEnumValue());
87
+ }
88
+ if (content.getVibrationPattern() != null) {
89
+ double[] serializedVibrationPattern = new double[content.getVibrationPattern().length];
90
+ for (int i = 0; i < serializedVibrationPattern.length; i++) {
91
+ serializedVibrationPattern[i] = content.getVibrationPattern()[i];
92
+ }
93
+ serializedContent.putDoubleArray("vibrationPattern", serializedVibrationPattern);
94
+ }
95
+ serializedContent.putBoolean("autoDismiss", content.isAutoDismiss());
96
+ if (content.getCategoryId() != null) {
97
+ serializedContent.putString("categoryIdentifier", content.getCategoryId());
98
+ }
99
+ serializedContent.putBoolean("sticky", content.isSticky());
100
+ return serializedContent;
101
+ }
102
+
103
+ public static Bundle toBundle(@Nullable JSONObject notification) {
104
+ if (notification == null) {
105
+ return null;
106
+ }
107
+ Map<String, Object> notificationMap = new HashMap<>(notification.length());
108
+ Iterator<String> keyIterator = notification.keys();
109
+ while (keyIterator.hasNext()) {
110
+ String key = keyIterator.next();
111
+ Object value = notification.opt(key);
112
+ if (value instanceof JSONObject) {
113
+ notificationMap.put(key, toBundle((JSONObject) value));
114
+ } else if (value instanceof JSONArray) {
115
+ notificationMap.put(key, toList((JSONArray) value));
116
+ } else if (JSONObject.NULL.equals(value)) {
117
+ notificationMap.put(key, null);
118
+ } else {
119
+ notificationMap.put(key, value);
120
+ }
121
+ }
122
+ try {
123
+ return new MapArguments(notificationMap).toBundle();
124
+ } catch (NullPointerException e) {
125
+ // If a NullPointerException was thrown it most probably means
126
+ // that @unimodules/core is at < 5.1.1 where we introduced
127
+ // support for null values in MapArguments' map). Let's go through
128
+ // the map and remove the null values to be backwards compatible.
129
+
130
+ Set<String> keySet = notificationMap.keySet();
131
+ for (String key : keySet) {
132
+ if (notificationMap.get(key) == null) {
133
+ notificationMap.remove(key);
134
+ }
135
+ }
136
+ return new MapArguments(notificationMap).toBundle();
137
+ }
138
+ }
139
+
140
+ private static List<Object> toList(JSONArray array) {
141
+ List<Object> result = new ArrayList<>(array.length());
142
+ for (int i = 0; i < array.length(); i++) {
143
+ if (array.isNull(i)) {
144
+ result.add(null);
145
+ } else if (array.optJSONObject(i) != null) {
146
+ result.add(toBundle(array.optJSONObject(i)));
147
+ } else if (array.optJSONArray(i) != null) {
148
+ result.add(toList(array.optJSONArray(i)));
149
+ } else {
150
+ result.add(array.opt(i));
151
+ }
152
+ }
153
+ return result;
154
+ }
155
+
156
+ private static Bundle toBundle(@Nullable NotificationTrigger trigger) {
157
+ if (trigger == null) {
158
+ return null;
159
+ }
160
+ Bundle bundle = new Bundle();
161
+ if (trigger instanceof FirebaseNotificationTrigger) {
162
+ bundle.putString("type", "push");
163
+ bundle.putBundle("remoteMessage", RemoteMessageSerializer.toBundle(((FirebaseNotificationTrigger) trigger).getRemoteMessage()));
164
+ } else if (trigger instanceof TimeIntervalTrigger) {
165
+ bundle.putString("type", "timeInterval");
166
+ bundle.putBoolean("repeats", ((TimeIntervalTrigger) trigger).isRepeating());
167
+ bundle.putLong("seconds", ((TimeIntervalTrigger) trigger).getTimeInterval());
168
+ } else if (trigger instanceof DateTrigger) {
169
+ bundle.putString("type", "date");
170
+ bundle.putBoolean("repeats", false);
171
+ bundle.putLong("value", ((DateTrigger) trigger).getTriggerDate().getTime());
172
+ } else if (trigger instanceof DailyTrigger) {
173
+ bundle.putString("type", "daily");
174
+ bundle.putInt("hour", ((DailyTrigger) trigger).getHour());
175
+ bundle.putInt("minute", ((DailyTrigger) trigger).getMinute());
176
+ } else if (trigger instanceof WeeklyTrigger) {
177
+ bundle.putString("type", "weekly");
178
+ bundle.putInt("weekday", ((WeeklyTrigger) trigger).getWeekday());
179
+ bundle.putInt("hour", ((WeeklyTrigger) trigger).getHour());
180
+ bundle.putInt("minute", ((WeeklyTrigger) trigger).getMinute());
181
+ } else if (trigger instanceof YearlyTrigger) {
182
+ bundle.putString("type", "yearly");
183
+ bundle.putInt("day", ((YearlyTrigger) trigger).getDay());
184
+ bundle.putInt("month", ((YearlyTrigger) trigger).getMonth());
185
+ bundle.putInt("hour", ((YearlyTrigger) trigger).getHour());
186
+ bundle.putInt("minute", ((YearlyTrigger) trigger).getMinute());
187
+ } else {
188
+ bundle.putString("type", "unknown");
189
+ }
190
+ bundle.putString("channelId", getChannelId(trigger));
191
+
192
+ return bundle;
193
+ }
194
+
195
+ @Nullable
196
+ private static String getChannelId(NotificationTrigger trigger) {
197
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
198
+ return trigger.getNotificationChannel();
199
+ }
200
+ return null;
201
+ }
202
+ }
@@ -0,0 +1,104 @@
1
+ package expo.modules.notifications.notifications;
2
+
3
+ import android.os.Bundle;
4
+
5
+ import com.google.firebase.messaging.RemoteMessage;
6
+
7
+ import java.util.Map;
8
+
9
+ import androidx.annotation.Nullable;
10
+
11
+ /**
12
+ * Serializes all the information available in {@link RemoteMessage}
13
+ * to {@link Bundle}.
14
+ */
15
+ public class RemoteMessageSerializer {
16
+ /**
17
+ * Serializes all the information available in {@link RemoteMessage}
18
+ *
19
+ * @param message {@link RemoteMessage} to serialize
20
+ * @return Serialized message
21
+ */
22
+ public static Bundle toBundle(RemoteMessage message) {
23
+ Bundle serializedMessage = new Bundle();
24
+ serializedMessage.putString("collapseKey", message.getCollapseKey());
25
+ serializedMessage.putBundle("data", toBundle(message.getData()));
26
+ serializedMessage.putString("from", message.getFrom());
27
+ serializedMessage.putString("messageId", message.getMessageId());
28
+ serializedMessage.putString("messageType", message.getMessageType());
29
+ serializedMessage.putBundle("notification", toBundle(message.getNotification()));
30
+ serializedMessage.putInt("originalPriority", message.getOriginalPriority());
31
+ serializedMessage.putInt("priority", message.getPriority());
32
+ serializedMessage.putLong("sentTime", message.getSentTime());
33
+ serializedMessage.putString("to", message.getTo());
34
+ serializedMessage.putInt("ttl", message.getTtl());
35
+ return serializedMessage;
36
+ }
37
+
38
+ private static Bundle toBundle(Map<String, String> data) {
39
+ Bundle serializedData = new Bundle();
40
+ for (Map.Entry<String, String> dataEntry : data.entrySet()) {
41
+ serializedData.putString(dataEntry.getKey(), dataEntry.getValue());
42
+ }
43
+ return serializedData;
44
+ }
45
+
46
+ private static Bundle toBundle(@Nullable RemoteMessage.Notification notification) {
47
+ if (notification == null) {
48
+ return null;
49
+ }
50
+
51
+ Bundle serializedNotification = new Bundle();
52
+ serializedNotification.putString("body", notification.getBody());
53
+ serializedNotification.putStringArray("bodyLocalizationArgs", notification.getBodyLocalizationArgs());
54
+ serializedNotification.putString("bodyLocalizationKey", notification.getBodyLocalizationKey());
55
+ serializedNotification.putString("channelId", notification.getChannelId());
56
+ serializedNotification.putString("clickAction", notification.getClickAction());
57
+ serializedNotification.putString("color", notification.getColor());
58
+ serializedNotification.putBoolean("usesDefaultLightSettings", notification.getDefaultLightSettings());
59
+ serializedNotification.putBoolean("usesDefaultSound", notification.getDefaultSound());
60
+ serializedNotification.putBoolean("usesDefaultVibrateSettings", notification.getDefaultVibrateSettings());
61
+ if (notification.getEventTime() != null) {
62
+ serializedNotification.putLong("eventTime", notification.getEventTime());
63
+ } else {
64
+ serializedNotification.putString("eventTime", null);
65
+ }
66
+ serializedNotification.putString("icon", notification.getIcon());
67
+ if (notification.getImageUrl() != null) {
68
+ serializedNotification.putString("imageUrl", notification.getImageUrl().toString());
69
+ } else {
70
+ serializedNotification.putString("imageUrl", null);
71
+ }
72
+ serializedNotification.putIntArray("lightSettings", notification.getLightSettings());
73
+ if (notification.getLink() != null) {
74
+ serializedNotification.putString("link", notification.getLink().toString());
75
+ } else {
76
+ serializedNotification.putString("link", null);
77
+ }
78
+ serializedNotification.putBoolean("localOnly", notification.getLocalOnly());
79
+ if (notification.getNotificationCount() != null) {
80
+ serializedNotification.putInt("notificationCount", notification.getNotificationCount());
81
+ } else {
82
+ serializedNotification.putString("notificationCount", null);
83
+ }
84
+ if (notification.getNotificationPriority() != null) {
85
+ serializedNotification.putInt("notificationPriority", notification.getNotificationPriority());
86
+ } else {
87
+ serializedNotification.putString("notificationPriority", null);
88
+ }
89
+ serializedNotification.putString("sound", notification.getSound());
90
+ serializedNotification.putBoolean("sticky", notification.getSticky());
91
+ serializedNotification.putString("tag", notification.getTag());
92
+ serializedNotification.putString("ticker", notification.getTicker());
93
+ serializedNotification.putString("title", notification.getTitle());
94
+ serializedNotification.putStringArray("titleLocalizationArgs", notification.getTitleLocalizationArgs());
95
+ serializedNotification.putString("titleLocalizationKey", notification.getTitleLocalizationKey());
96
+ serializedNotification.putLongArray("vibrateTimings", notification.getVibrateTimings());
97
+ if (notification.getVisibility() != null) {
98
+ serializedNotification.putInt("visibility", notification.getVisibility());
99
+ } else {
100
+ serializedNotification.putString("visibility", null);
101
+ }
102
+ return serializedNotification;
103
+ }
104
+ }
@@ -0,0 +1,58 @@
1
+ package expo.modules.notifications.notifications;
2
+
3
+ import android.content.ContentResolver;
4
+ import android.content.Context;
5
+ import android.net.Uri;
6
+ import android.provider.Settings;
7
+
8
+ import androidx.annotation.Nullable;
9
+
10
+ /**
11
+ * A shared logic between ContentBuilders ({@link ArgumentsNotificationContentBuilder}
12
+ * and {@link JSONNotificationContentBuilder}) for resolving sounds based on the "sound" property.
13
+ */
14
+ public class SoundResolver {
15
+ private Context mContext;
16
+
17
+ public SoundResolver(Context context) {
18
+ mContext = context;
19
+ }
20
+
21
+ /**
22
+ * For given filename tries to resolve a raw resource by basename.
23
+ *
24
+ * @param filename A sound's filename
25
+ * @return null if there was no sound found for the filename or a {@link Uri} to the raw resource
26
+ * if one could be found.
27
+ */
28
+ @Nullable
29
+ public Uri resolve(@Nullable String filename) {
30
+ if (filename == null || filename.length() == 0) {
31
+ return null;
32
+ }
33
+
34
+ String packageName = mContext.getPackageName();
35
+ String resourceName = filenameToBasename(filename);
36
+ int resourceId = mContext.getResources().getIdentifier(resourceName, "raw", packageName);
37
+ // If resourceId is 0, then the resource does not exist.
38
+ // Returning null falls back to using a default sound.
39
+ if (resourceId != 0) {
40
+ return new Uri.Builder()
41
+ .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
42
+ .authority(packageName)
43
+ .appendPath("raw")
44
+ .appendPath(resourceName)
45
+ .build();
46
+ }
47
+
48
+ return Settings.System.DEFAULT_NOTIFICATION_URI;
49
+ }
50
+
51
+ private String filenameToBasename(String filename) {
52
+ if (!filename.contains(".")) {
53
+ return filename;
54
+ }
55
+
56
+ return filename.substring(0, filename.lastIndexOf('.'));
57
+ }
58
+ }
@@ -0,0 +1,123 @@
1
+ package expo.modules.notifications.notifications.background;
2
+
3
+ import android.app.job.JobParameters;
4
+ import android.app.job.JobService;
5
+ import android.content.Context;
6
+ import android.os.Bundle;
7
+ import android.os.PersistableBundle;
8
+ import android.util.Log;
9
+
10
+ import org.json.JSONException;
11
+ import org.json.JSONObject;
12
+
13
+ import java.util.Collections;
14
+ import java.util.List;
15
+ import java.util.Map;
16
+
17
+ import expo.modules.notifications.notifications.NotificationSerializer;
18
+ import expo.modules.notifications.service.delegates.FirebaseMessagingDelegate;
19
+ import expo.modules.interfaces.taskManager.TaskConsumer;
20
+ import expo.modules.interfaces.taskManager.TaskConsumerInterface;
21
+ import expo.modules.interfaces.taskManager.TaskExecutionCallback;
22
+ import expo.modules.interfaces.taskManager.TaskInterface;
23
+ import expo.modules.interfaces.taskManager.TaskManagerUtilsInterface;
24
+
25
+ /**
26
+ * Represents a task to be run when the app is receives a remote push
27
+ * notification. Map of current tasks is maintained in {@link FirebaseMessagingDelegate}.
28
+ */
29
+ public class BackgroundRemoteNotificationTaskConsumer extends TaskConsumer implements TaskConsumerInterface {
30
+ private static final String TAG = BackgroundRemoteNotificationTaskConsumer.class.getSimpleName();
31
+ private static final String NOTIFICATION_KEY = "notification";
32
+
33
+ private TaskInterface mTask;
34
+
35
+ public BackgroundRemoteNotificationTaskConsumer(Context context, TaskManagerUtilsInterface taskManagerUtils) {
36
+ super(context, taskManagerUtils);
37
+ FirebaseMessagingDelegate.Companion.addBackgroundTaskConsumer(this);
38
+ }
39
+
40
+ //region TaskConsumerInterface
41
+
42
+ @Override
43
+ public String taskType() {
44
+ return "remote-notification";
45
+ }
46
+
47
+ @Override
48
+ public void didRegister(TaskInterface task) {
49
+ mTask = task;
50
+ }
51
+
52
+ @Override
53
+ public void didUnregister() {
54
+ mTask = null;
55
+ }
56
+
57
+ public void scheduleJob(Bundle bundle) {
58
+ Context context = getContext();
59
+
60
+ if (context != null && mTask != null) {
61
+ PersistableBundle data = new PersistableBundle();
62
+ // Bundles are not persistable, so let's convert to a JSON string
63
+ data.putString(NOTIFICATION_KEY, bundleToJson(bundle).toString());
64
+ getTaskManagerUtils().scheduleJob(context, mTask, Collections.singletonList(data));
65
+ }
66
+ }
67
+
68
+ @Override
69
+ public boolean didExecuteJob(final JobService jobService, final JobParameters params) {
70
+ if (mTask == null) {
71
+ return false;
72
+ }
73
+
74
+ List<PersistableBundle> data = getTaskManagerUtils().extractDataFromJobParams(params);
75
+
76
+ for (PersistableBundle item : data) {
77
+ Bundle bundle = new Bundle();
78
+ bundle.putBundle(NOTIFICATION_KEY, jsonStringToBundle(item.getString(NOTIFICATION_KEY)));
79
+ mTask.execute(bundle, null, new TaskExecutionCallback() {
80
+ @Override
81
+ public void onFinished(Map<String, Object> response) {
82
+ jobService.jobFinished(params, false);
83
+ }
84
+ });
85
+ }
86
+
87
+ // Returning `true` indicates that the job is still running, but in async mode.
88
+ // In that case we're obligated to call `jobService.jobFinished` as soon as the async block finishes.
89
+ return true;
90
+ }
91
+
92
+ //endregion
93
+ //region private methods
94
+
95
+ private static JSONObject bundleToJson(Bundle bundle) {
96
+ JSONObject json = new JSONObject();
97
+ for (String key : bundle.keySet()) {
98
+ try {
99
+ if (bundle.get(key) instanceof Bundle) {
100
+ json.put(key, bundleToJson((Bundle) bundle.get(key)));
101
+ } else {
102
+ json.put(key, JSONObject.wrap(bundle.get(key)));
103
+ }
104
+ } catch(JSONException e) {
105
+ Log.e("expo-notifications", "Could not create JSON object from notification bundle. " + e.getMessage());
106
+ }
107
+ }
108
+ return json;
109
+ }
110
+
111
+ private static Bundle jsonStringToBundle(String jsonString) {
112
+ Bundle bundle = new Bundle();
113
+ try {
114
+ JSONObject jsonObject = new JSONObject(jsonString);
115
+ bundle = NotificationSerializer.toBundle(jsonObject);
116
+ } catch (JSONException e) {
117
+ Log.e("expo-notifications", "Could not parse notification from JSON string. " + e.getMessage());
118
+ }
119
+ return bundle;
120
+ }
121
+
122
+ //endregion
123
+ }
@@ -0,0 +1,33 @@
1
+ package expo.modules.notifications.notifications.background
2
+
3
+ import expo.modules.interfaces.taskManager.TaskManagerInterface
4
+ import expo.modules.kotlin.modules.Module
5
+ import expo.modules.kotlin.modules.ModuleDefinition
6
+ import expo.modules.notifications.ModuleNotFoundException
7
+
8
+ class ExpoBackgroundNotificationTasksModule : Module() {
9
+ private lateinit var taskManager: TaskManagerInterface
10
+
11
+ override fun definition() = ModuleDefinition {
12
+ Name("ExpoBackgroundNotificationTasksModule")
13
+ OnCreate {
14
+ taskManager = appContext.legacyModule()
15
+ ?: throw ModuleNotFoundException(TaskManagerInterface::class)
16
+ }
17
+
18
+ AsyncFunction("registerTaskAsync") { taskName: String ->
19
+ taskManager.registerTask(
20
+ taskName,
21
+ BackgroundRemoteNotificationTaskConsumer::class.java,
22
+ emptyMap()
23
+ )
24
+ }
25
+
26
+ AsyncFunction("unregisterTaskAsync") { taskName: String ->
27
+ taskManager.unregisterTask(
28
+ taskName,
29
+ BackgroundRemoteNotificationTaskConsumer::class.java
30
+ )
31
+ }
32
+ }
33
+ }