react-native-notify-kit 9.3.0 → 9.5.0

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 (53) hide show
  1. package/README.md +68 -2
  2. package/android/build.gradle +5 -0
  3. package/android/proguard-rules.pro +1 -0
  4. package/android/src/androidTest/java/app/notifee/core/DoScheduledWorkOrderingTest.java +234 -0
  5. package/android/src/androidTest/java/app/notifee/core/RebootRecoveryTest.java +204 -0
  6. package/android/src/androidTest/java/app/notifee/core/database/TimingWorkDataRepository.java +56 -0
  7. package/android/src/androidTest/java/app/notifee/core/database/WorkDataRepositoryRaceTest.java +221 -0
  8. package/android/src/androidTest/res/drawable/test_icon.xml +14 -0
  9. package/android/src/main/baseline-prof.txt +382 -0
  10. package/android/src/main/java/app/notifee/core/ForegroundService.java +269 -80
  11. package/android/src/main/java/app/notifee/core/InitProvider.java +48 -5
  12. package/android/src/main/java/app/notifee/core/Logger.java +5 -0
  13. package/android/src/main/java/app/notifee/core/NotifeeAlarmManager.java +160 -79
  14. package/android/src/main/java/app/notifee/core/NotificationManager.java +370 -288
  15. package/android/src/main/java/app/notifee/core/WarmupHelper.java +84 -0
  16. package/android/src/main/java/app/notifee/core/database/WorkDataRepository.java +38 -34
  17. package/android/src/main/java/app/notifee/core/model/NotificationAndroidModel.java +17 -1
  18. package/android/src/main/kotlin/io/invertase/notifee/NotifeeApiModule.kt +30 -0
  19. package/android/src/test/java/app/notifee/core/ForegroundServiceTest.java +182 -0
  20. package/android/src/test/java/app/notifee/core/database/WorkDataRepositoryFutureContractTest.java +279 -0
  21. package/dist/NotifeeApiModule.d.ts +1 -0
  22. package/dist/NotifeeApiModule.js +6 -0
  23. package/dist/NotifeeApiModule.js.map +1 -1
  24. package/dist/specs/NativeNotifeeModule.d.ts +1 -0
  25. package/dist/specs/NativeNotifeeModule.js.map +1 -1
  26. package/dist/types/Module.d.ts +19 -0
  27. package/dist/types/NotificationAndroid.d.ts +58 -0
  28. package/dist/types/NotificationAndroid.js +43 -0
  29. package/dist/types/NotificationAndroid.js.map +1 -1
  30. package/dist/utils/validate.d.ts +1 -0
  31. package/dist/utils/validate.js +10 -4
  32. package/dist/utils/validate.js.map +1 -1
  33. package/dist/validators/validateAndroidChannel.js +3 -3
  34. package/dist/validators/validateAndroidChannel.js.map +1 -1
  35. package/dist/validators/validateAndroidNotification.js +36 -12
  36. package/dist/validators/validateAndroidNotification.js.map +1 -1
  37. package/dist/version.d.ts +1 -1
  38. package/dist/version.js +1 -1
  39. package/ios/NotifeeCore/NotifeeCore+NSNotificationCenter.m +5 -1
  40. package/ios/NotifeeCore/NotifeeCore+UNUserNotificationCenter.m +5 -5
  41. package/ios/NotifeeCore/NotifeeCore.m +28 -9
  42. package/ios/NotifeeCore/NotifeeCoreDelegateHolder.m +5 -1
  43. package/ios/NotifeeCore/NotifeeCoreExtensionHelper.m +7 -2
  44. package/ios/RNNotifee/NotifeeApiModule.mm +31 -10
  45. package/package.json +1 -1
  46. package/src/NotifeeApiModule.ts +7 -0
  47. package/src/specs/NativeNotifeeModule.ts +1 -0
  48. package/src/types/Module.ts +20 -0
  49. package/src/types/NotificationAndroid.ts +62 -0
  50. package/src/utils/validate.ts +12 -4
  51. package/src/validators/validateAndroidChannel.ts +3 -3
  52. package/src/validators/validateAndroidNotification.ts +43 -10
  53. package/src/version.ts +1 -1
@@ -13,6 +13,8 @@ import {
13
13
  isString,
14
14
  isUndefined,
15
15
  isIOS,
16
+ isValidEnum,
17
+ getNumericEnumValues,
16
18
  } from '../utils';
17
19
 
18
20
  import { AndroidImportance } from '../types/NotificationAndroid';
@@ -20,6 +22,7 @@ import {
20
22
  AndroidBadgeIconType,
21
23
  AndroidCategory,
22
24
  AndroidDefaults,
25
+ AndroidForegroundServiceBehavior,
23
26
  AndroidForegroundServiceType,
24
27
  AndroidFlags,
25
28
  AndroidGroupAlertBehavior,
@@ -116,6 +119,22 @@ export default function validateAndroidNotification(
116
119
  out.asForegroundService = android.asForegroundService;
117
120
  }
118
121
 
122
+ /**
123
+ * foregroundServiceBehavior
124
+ */
125
+ if (
126
+ objectHasProperty(android, 'foregroundServiceBehavior') &&
127
+ !isUndefined(android.foregroundServiceBehavior)
128
+ ) {
129
+ if (!isValidEnum(android.foregroundServiceBehavior, AndroidForegroundServiceBehavior)) {
130
+ throw new Error(
131
+ "'notification.android.foregroundServiceBehavior' expected a valid AndroidForegroundServiceBehavior.",
132
+ );
133
+ }
134
+
135
+ out.foregroundServiceBehavior = android.foregroundServiceBehavior;
136
+ }
137
+
119
138
  /**
120
139
  * lightUpScreen
121
140
  */
@@ -153,7 +172,7 @@ export default function validateAndroidNotification(
153
172
  * badgeIconType
154
173
  */
155
174
  if (objectHasProperty(android, 'badgeIconType') && !isUndefined(android.badgeIconType)) {
156
- if (!Object.values(AndroidBadgeIconType).includes(android.badgeIconType)) {
175
+ if (!isValidEnum(android.badgeIconType, AndroidBadgeIconType)) {
157
176
  throw new Error(
158
177
  "'notification.android.badgeIconType' expected a valid AndroidBadgeIconType.",
159
178
  );
@@ -239,7 +258,7 @@ export default function validateAndroidNotification(
239
258
  );
240
259
  }
241
260
 
242
- const defaults = Object.values(AndroidDefaults);
261
+ const defaults = getNumericEnumValues(AndroidDefaults);
243
262
 
244
263
  for (let i = 0; i < android.defaults.length; i++) {
245
264
  if (!defaults.includes(android.defaults[i])) {
@@ -270,7 +289,7 @@ export default function validateAndroidNotification(
270
289
  objectHasProperty(android, 'groupAlertBehavior') &&
271
290
  !isUndefined(android.groupAlertBehavior)
272
291
  ) {
273
- if (!Object.values(AndroidGroupAlertBehavior).includes(android.groupAlertBehavior)) {
292
+ if (!isValidEnum(android.groupAlertBehavior, AndroidGroupAlertBehavior)) {
274
293
  throw new Error(
275
294
  "'notification.android.groupAlertBehavior' expected a valid AndroidGroupAlertBehavior.",
276
295
  );
@@ -407,10 +426,10 @@ export default function validateAndroidNotification(
407
426
  );
408
427
  }
409
428
 
410
- const defaults = Object.values(AndroidForegroundServiceType);
429
+ const foregroundServiceTypeValues = getNumericEnumValues(AndroidForegroundServiceType);
411
430
 
412
431
  for (let i = 0; i < android.foregroundServiceTypes.length; i++) {
413
- if (!defaults.includes(android.foregroundServiceTypes[i])) {
432
+ if (!foregroundServiceTypeValues.includes(android.foregroundServiceTypes[i])) {
414
433
  throw new Error(
415
434
  "'notification.android.foregroundServiceTypes' invalid array value, expected an AndroidForegroundServiceType value.",
416
435
  );
@@ -429,13 +448,13 @@ export default function validateAndroidNotification(
429
448
  }
430
449
 
431
450
  if (android.flags.length === 0) {
432
- throw new Error("'notification.android.flags' expected an array containing AndroidDefaults.");
451
+ throw new Error("'notification.android.flags' expected an array containing AndroidFlags.");
433
452
  }
434
453
 
435
- const defaults = Object.values(AndroidFlags);
454
+ const flagValues = getNumericEnumValues(AndroidFlags);
436
455
 
437
456
  for (let i = 0; i < android.flags.length; i++) {
438
- if (!defaults.includes(android.flags[i])) {
457
+ if (!flagValues.includes(android.flags[i])) {
439
458
  throw new Error(
440
459
  "'notification.android.flags' invalid array value, expected an AndroidFlags value.",
441
460
  );
@@ -502,7 +521,7 @@ export default function validateAndroidNotification(
502
521
  * importance
503
522
  */
504
523
  if (objectHasProperty(android, 'importance') && !isUndefined(android.importance)) {
505
- if (!Object.values(AndroidImportance).includes(android.importance)) {
524
+ if (!isValidEnum(android.importance, AndroidImportance)) {
506
525
  throw new Error("'notification.android.importance' expected a valid Importance.");
507
526
  }
508
527
 
@@ -713,7 +732,7 @@ export default function validateAndroidNotification(
713
732
  * visibility
714
733
  */
715
734
  if (objectHasProperty(android, 'visibility') && android.visibility !== undefined) {
716
- if (!Object.values(AndroidVisibility).includes(android.visibility)) {
735
+ if (!isValidEnum(android.visibility, AndroidVisibility)) {
717
736
  throw new Error(
718
737
  "'notification.android.visibility' expected a valid AndroidVisibility value.",
719
738
  );
@@ -759,5 +778,19 @@ export default function validateAndroidNotification(
759
778
  out.ongoing = true;
760
779
  }
761
780
 
781
+ /**
782
+ * Auto-set foregroundServiceBehavior to IMMEDIATE for foreground service notifications.
783
+ * Only set when asForegroundService is true and the user did not provide an explicit value.
784
+ * When asForegroundService is false/undefined, strip the property entirely — it has no effect
785
+ * on non-FGS notifications and including it would bloat the Bundle unnecessarily.
786
+ */
787
+ if (out.asForegroundService) {
788
+ if (android && !objectHasProperty(android, 'foregroundServiceBehavior')) {
789
+ out.foregroundServiceBehavior = AndroidForegroundServiceBehavior.IMMEDIATE;
790
+ }
791
+ } else {
792
+ delete out.foregroundServiceBehavior;
793
+ }
794
+
762
795
  return out;
763
796
  }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '9.3.0';
2
+ export const version = '9.5.0';