react-native-push-signal 0.1.4 → 0.1.7

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 (103) hide show
  1. package/LICENSE +1 -1
  2. package/PushSignal.podspec +2 -12
  3. package/README.md +3 -11
  4. package/README.ru.md +3 -11
  5. package/android/build.gradle +1 -62
  6. package/android/consumer-rules.pro +3 -3
  7. package/android/src/main/AndroidManifest.xml +2 -2
  8. package/android/src/main/java/com/pushsignal/PushModels.kt +15 -0
  9. package/android/src/main/java/com/{margelo/nitro/pushsignal → pushsignal}/PushSignalCenter.kt +24 -71
  10. package/android/src/main/java/com/{margelo/nitro/pushsignal → pushsignal}/PushSignalInitProvider.kt +1 -1
  11. package/android/src/main/java/com/{margelo/nitro/pushsignal → pushsignal}/PushSignalMessagingService.kt +1 -1
  12. package/android/src/main/java/com/pushsignal/PushSignalModule.kt +88 -0
  13. package/android/src/main/java/com/pushsignal/PushSignalPackage.kt +30 -0
  14. package/ios/PushSignal.h +4 -0
  15. package/ios/PushSignal.mm +57 -0
  16. package/ios/PushSignalCenter.h +26 -0
  17. package/ios/PushSignalCenter.m +608 -0
  18. package/ios/PushSignalLaunchStore.m +6 -9
  19. package/lib/module/NativePushSignal.js +5 -0
  20. package/lib/module/NativePushSignal.js.map +1 -0
  21. package/lib/module/pushSignal.native.js +36 -12
  22. package/lib/module/pushSignal.native.js.map +1 -1
  23. package/lib/module/types.js +2 -0
  24. package/lib/module/types.js.map +1 -0
  25. package/lib/typescript/src/NativePushSignal.d.ts +22 -0
  26. package/lib/typescript/src/NativePushSignal.d.ts.map +1 -0
  27. package/lib/typescript/src/index.d.ts +1 -1
  28. package/lib/typescript/src/index.d.ts.map +1 -1
  29. package/lib/typescript/src/pushSignal.d.ts +1 -1
  30. package/lib/typescript/src/pushSignal.d.ts.map +1 -1
  31. package/lib/typescript/src/pushSignal.native.d.ts +1 -1
  32. package/lib/typescript/src/pushSignal.native.d.ts.map +1 -1
  33. package/lib/typescript/src/types.d.ts +22 -0
  34. package/lib/typescript/src/types.d.ts.map +1 -0
  35. package/package.json +14 -19
  36. package/src/NativePushSignal.ts +25 -0
  37. package/src/index.tsx +1 -1
  38. package/src/pushSignal.native.tsx +60 -22
  39. package/src/pushSignal.tsx +1 -1
  40. package/src/types.ts +25 -0
  41. package/android/CMakeLists.txt +0 -24
  42. package/android/src/main/cpp/cpp-adapter.cpp +0 -11
  43. package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignal.kt +0 -38
  44. package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignalPackage.kt +0 -22
  45. package/ios/PushSignal.swift +0 -29
  46. package/ios/PushSignalCenter.swift +0 -588
  47. package/lib/module/PushSignal.nitro.js +0 -4
  48. package/lib/module/PushSignal.nitro.js.map +0 -1
  49. package/lib/typescript/src/PushSignal.nitro.d.ts +0 -32
  50. package/lib/typescript/src/PushSignal.nitro.d.ts.map +0 -1
  51. package/nitro.json +0 -23
  52. package/nitrogen/generated/android/c++/JAndroidFirebaseConfig.hpp +0 -70
  53. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_bool_____PushMessage.hpp +0 -128
  54. package/nitrogen/generated/android/c++/JFunc_void_PushMessage.hpp +0 -80
  55. package/nitrogen/generated/android/c++/JHybridPushSignalSpec.cpp +0 -115
  56. package/nitrogen/generated/android/c++/JHybridPushSignalSpec.hpp +0 -66
  57. package/nitrogen/generated/android/c++/JPushCredentials.hpp +0 -70
  58. package/nitrogen/generated/android/c++/JPushEnvironment.hpp +0 -58
  59. package/nitrogen/generated/android/c++/JPushMessage.hpp +0 -84
  60. package/nitrogen/generated/android/c++/JPushPlatform.hpp +0 -58
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/AndroidFirebaseConfig.kt +0 -66
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_bool_____PushMessage.kt +0 -78
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/Func_void_PushMessage.kt +0 -78
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/HybridPushSignalSpec.kt +0 -79
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushCredentials.kt +0 -61
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushEnvironment.kt +0 -23
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushMessage.kt +0 -66
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushPlatform.kt +0 -23
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/pushsignalOnLoad.kt +0 -35
  70. package/nitrogen/generated/android/pushsignal+autolinking.cmake +0 -81
  71. package/nitrogen/generated/android/pushsignal+autolinking.gradle +0 -27
  72. package/nitrogen/generated/android/pushsignalOnLoad.cpp +0 -58
  73. package/nitrogen/generated/android/pushsignalOnLoad.hpp +0 -34
  74. package/nitrogen/generated/ios/PushSignal+autolinking.rb +0 -62
  75. package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Bridge.cpp +0 -90
  76. package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Bridge.hpp +0 -345
  77. package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Umbrella.hpp +0 -63
  78. package/nitrogen/generated/ios/PushSignalAutolinking.mm +0 -33
  79. package/nitrogen/generated/ios/PushSignalAutolinking.swift +0 -26
  80. package/nitrogen/generated/ios/c++/HybridPushSignalSpecSwift.cpp +0 -11
  81. package/nitrogen/generated/ios/c++/HybridPushSignalSpecSwift.hpp +0 -120
  82. package/nitrogen/generated/ios/swift/AndroidFirebaseConfig.swift +0 -96
  83. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_bool_____PushMessage.swift +0 -61
  84. package/nitrogen/generated/ios/swift/Func_void.swift +0 -46
  85. package/nitrogen/generated/ios/swift/Func_void_PushCredentials.swift +0 -46
  86. package/nitrogen/generated/ios/swift/Func_void_PushMessage.swift +0 -46
  87. package/nitrogen/generated/ios/swift/Func_void_bool.swift +0 -46
  88. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -46
  89. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_bool__.swift +0 -66
  90. package/nitrogen/generated/ios/swift/HybridPushSignalSpec.swift +0 -58
  91. package/nitrogen/generated/ios/swift/HybridPushSignalSpec_cxx.swift +0 -217
  92. package/nitrogen/generated/ios/swift/PushCredentials.swift +0 -45
  93. package/nitrogen/generated/ios/swift/PushEnvironment.swift +0 -40
  94. package/nitrogen/generated/ios/swift/PushMessage.swift +0 -97
  95. package/nitrogen/generated/ios/swift/PushPlatform.swift +0 -40
  96. package/nitrogen/generated/shared/c++/AndroidFirebaseConfig.hpp +0 -96
  97. package/nitrogen/generated/shared/c++/HybridPushSignalSpec.cpp +0 -24
  98. package/nitrogen/generated/shared/c++/HybridPushSignalSpec.hpp +0 -74
  99. package/nitrogen/generated/shared/c++/PushCredentials.hpp +0 -97
  100. package/nitrogen/generated/shared/c++/PushEnvironment.hpp +0 -76
  101. package/nitrogen/generated/shared/c++/PushMessage.hpp +0 -97
  102. package/nitrogen/generated/shared/c++/PushPlatform.hpp +0 -76
  103. package/src/PushSignal.nitro.ts +0 -39
@@ -1,35 +1,59 @@
1
1
  "use strict";
2
2
 
3
- import { NitroModules } from 'react-native-nitro-modules';
4
- const PushSignalHybridObject = NitroModules.createHybridObject('PushSignal');
3
+ import NativePushSignal from "./NativePushSignal.js";
5
4
  const messageListeners = new Set();
6
5
  const pressListeners = new Set();
7
6
  let nativeCallbacksBound = false;
7
+ function normalizeMessage(raw) {
8
+ const data = {};
9
+ if (raw.data && typeof raw.data === 'object') {
10
+ for (const [key, value] of Object.entries(raw.data)) {
11
+ if (value == null) {
12
+ continue;
13
+ }
14
+ data[key] = typeof value === 'string' ? value : String(value);
15
+ }
16
+ }
17
+ return {
18
+ id: raw.id,
19
+ title: raw.title,
20
+ body: raw.body,
21
+ data
22
+ };
23
+ }
24
+ function normalizeCredentials(raw) {
25
+ return {
26
+ platform: raw.platform,
27
+ token: raw.token,
28
+ environment: raw.environment
29
+ };
30
+ }
8
31
  function bindNativeCallbacks() {
9
32
  if (nativeCallbacksBound) {
10
33
  return;
11
34
  }
12
35
  nativeCallbacksBound = true;
13
- PushSignalHybridObject.setOnMessage(async message => {
14
- const listeners = [...messageListeners];
15
- const results = await Promise.all(listeners.map(async listener => {
36
+ NativePushSignal.onMessage(raw => {
37
+ const message = normalizeMessage(raw);
38
+ for (const listener of [...messageListeners]) {
16
39
  try {
17
- return await listener(message);
40
+ Promise.resolve(listener(message)).then(() => undefined, () => undefined);
18
41
  } catch {
19
- return false;
42
+ // Ignore listener failures so one bad subscriber cannot break delivery.
20
43
  }
21
- }));
22
- return results.some(result => result === true);
44
+ }
23
45
  });
24
- PushSignalHybridObject.setOnNotificationPress(message => {
46
+ NativePushSignal.onNotificationPress(raw => {
47
+ const message = normalizeMessage(raw);
25
48
  pressListeners.forEach(listener => listener(message));
26
49
  });
50
+ NativePushSignal.startListening();
27
51
  }
28
52
  export function initialize(config = {}) {
29
- return PushSignalHybridObject.initialize(config);
53
+ return NativePushSignal.initialize(config);
30
54
  }
31
55
  export function getCredentials() {
32
- return PushSignalHybridObject.getCredentials();
56
+ return NativePushSignal.getCredentials().then(normalizeCredentials);
33
57
  }
34
58
  export function onMessage(listener) {
35
59
  bindNativeCallbacks();
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","PushSignalHybridObject","createHybridObject","messageListeners","Set","pressListeners","nativeCallbacksBound","bindNativeCallbacks","setOnMessage","message","listeners","results","Promise","all","map","listener","some","result","setOnNotificationPress","forEach","initialize","config","getCredentials","onMessage","add","delete","onNotificationPress"],"sourceRoot":"../../src","sources":["pushSignal.native.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AASzD,MAAMC,sBAAsB,GAC1BD,YAAY,CAACE,kBAAkB,CAAa,YAAY,CAAC;AAE3D,MAAMC,gBAAgB,GAAG,IAAIC,GAAG,CAAoB,CAAC;AACrD,MAAMC,cAAc,GAAG,IAAID,GAAG,CAAiC,CAAC;AAChE,IAAIE,oBAAoB,GAAG,KAAK;AAEhC,SAASC,mBAAmBA,CAAA,EAAG;EAC7B,IAAID,oBAAoB,EAAE;IACxB;EACF;EAEAA,oBAAoB,GAAG,IAAI;EAE3BL,sBAAsB,CAACO,YAAY,CAAC,MAAOC,OAAO,IAAK;IACrD,MAAMC,SAAS,GAAG,CAAC,GAAGP,gBAAgB,CAAC;IACvC,MAAMQ,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC/BH,SAAS,CAACI,GAAG,CAAC,MAAOC,QAAQ,IAAK;MAChC,IAAI;QACF,OAAO,MAAMA,QAAQ,CAACN,OAAO,CAAC;MAChC,CAAC,CAAC,MAAM;QACN,OAAO,KAAK;MACd;IACF,CAAC,CACH,CAAC;IAED,OAAOE,OAAO,CAACK,IAAI,CAAEC,MAAM,IAAKA,MAAM,KAAK,IAAI,CAAC;EAClD,CAAC,CAAC;EAEFhB,sBAAsB,CAACiB,sBAAsB,CAAET,OAAO,IAAK;IACzDJ,cAAc,CAACc,OAAO,CAAEJ,QAAQ,IAAKA,QAAQ,CAACN,OAAO,CAAC,CAAC;EACzD,CAAC,CAAC;AACJ;AAEA,OAAO,SAASW,UAAUA,CAACC,MAA6B,GAAG,CAAC,CAAC,EAAiB;EAC5E,OAAOpB,sBAAsB,CAACmB,UAAU,CAACC,MAAM,CAAC;AAClD;AAEA,OAAO,SAASC,cAAcA,CAAA,EAA6B;EACzD,OAAOrB,sBAAsB,CAACqB,cAAc,CAAC,CAAC;AAChD;AAEA,OAAO,SAASC,SAASA,CAACR,QAA2B,EAAc;EACjER,mBAAmB,CAAC,CAAC;EACrBJ,gBAAgB,CAACqB,GAAG,CAACT,QAAQ,CAAC;EAC9B,OAAO,MAAM;IACXZ,gBAAgB,CAACsB,MAAM,CAACV,QAAQ,CAAC;EACnC,CAAC;AACH;AAEA,OAAO,SAASW,mBAAmBA,CACjCX,QAAwC,EAC5B;EACZR,mBAAmB,CAAC,CAAC;EACrBF,cAAc,CAACmB,GAAG,CAACT,QAAQ,CAAC;EAC5B,OAAO,MAAM;IACXV,cAAc,CAACoB,MAAM,CAACV,QAAQ,CAAC;EACjC,CAAC;AACH;AAEAR,mBAAmB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NativePushSignal","messageListeners","Set","pressListeners","nativeCallbacksBound","normalizeMessage","raw","data","key","value","Object","entries","String","id","title","body","normalizeCredentials","platform","token","environment","bindNativeCallbacks","onMessage","message","listener","Promise","resolve","then","undefined","onNotificationPress","forEach","startListening","initialize","config","getCredentials","add","delete"],"sourceRoot":"../../src","sources":["pushSignal.native.tsx"],"mappings":";;AAAA,OAAOA,gBAAgB,MAAM,uBAAoB;AAUjD,MAAMC,gBAAgB,GAAG,IAAIC,GAAG,CAAoB,CAAC;AACrD,MAAMC,cAAc,GAAG,IAAID,GAAG,CAAiC,CAAC;AAChE,IAAIE,oBAAoB,GAAG,KAAK;AAEhC,SAASC,gBAAgBA,CAACC,GAKzB,EAAe;EACd,MAAMC,IAA4B,GAAG,CAAC,CAAC;EACvC,IAAID,GAAG,CAACC,IAAI,IAAI,OAAOD,GAAG,CAACC,IAAI,KAAK,QAAQ,EAAE;IAC5C,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CACvCL,GAAG,CAACC,IACN,CAAC,EAAE;MACD,IAAIE,KAAK,IAAI,IAAI,EAAE;QACjB;MACF;MACAF,IAAI,CAACC,GAAG,CAAC,GAAG,OAAOC,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGG,MAAM,CAACH,KAAK,CAAC;IAC/D;EACF;EAEA,OAAO;IACLI,EAAE,EAAEP,GAAG,CAACO,EAAE;IACVC,KAAK,EAAER,GAAG,CAACQ,KAAK;IAChBC,IAAI,EAAET,GAAG,CAACS,IAAI;IACdR;EACF,CAAC;AACH;AAEA,SAASS,oBAAoBA,CAACV,GAI7B,EAAmB;EAClB,OAAO;IACLW,QAAQ,EAAEX,GAAG,CAACW,QAAwB;IACtCC,KAAK,EAAEZ,GAAG,CAACY,KAAK;IAChBC,WAAW,EAAEb,GAAG,CAACa;EACnB,CAAC;AACH;AAEA,SAASC,mBAAmBA,CAAA,EAAG;EAC7B,IAAIhB,oBAAoB,EAAE;IACxB;EACF;EAEAA,oBAAoB,GAAG,IAAI;EAE3BJ,gBAAgB,CAACqB,SAAS,CAAEf,GAAG,IAAK;IAClC,MAAMgB,OAAO,GAAGjB,gBAAgB,CAACC,GAAG,CAAC;IACrC,KAAK,MAAMiB,QAAQ,IAAI,CAAC,GAAGtB,gBAAgB,CAAC,EAAE;MAC5C,IAAI;QACFuB,OAAO,CAACC,OAAO,CAACF,QAAQ,CAACD,OAAO,CAAC,CAAC,CAACI,IAAI,CACrC,MAAMC,SAAS,EACf,MAAMA,SACR,CAAC;MACH,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF,CAAC,CAAC;EAEF3B,gBAAgB,CAAC4B,mBAAmB,CAAEtB,GAAG,IAAK;IAC5C,MAAMgB,OAAO,GAAGjB,gBAAgB,CAACC,GAAG,CAAC;IACrCH,cAAc,CAAC0B,OAAO,CAAEN,QAAQ,IAAKA,QAAQ,CAACD,OAAO,CAAC,CAAC;EACzD,CAAC,CAAC;EAEFtB,gBAAgB,CAAC8B,cAAc,CAAC,CAAC;AACnC;AAEA,OAAO,SAASC,UAAUA,CAACC,MAA6B,GAAG,CAAC,CAAC,EAAiB;EAC5E,OAAOhC,gBAAgB,CAAC+B,UAAU,CAACC,MAAM,CAAC;AAC5C;AAEA,OAAO,SAASC,cAAcA,CAAA,EAA6B;EACzD,OAAOjC,gBAAgB,CAACiC,cAAc,CAAC,CAAC,CAACP,IAAI,CAACV,oBAAoB,CAAC;AACrE;AAEA,OAAO,SAASK,SAASA,CAACE,QAA2B,EAAc;EACjEH,mBAAmB,CAAC,CAAC;EACrBnB,gBAAgB,CAACiC,GAAG,CAACX,QAAQ,CAAC;EAC9B,OAAO,MAAM;IACXtB,gBAAgB,CAACkC,MAAM,CAACZ,QAAQ,CAAC;EACnC,CAAC;AACH;AAEA,OAAO,SAASK,mBAAmBA,CACjCL,QAAwC,EAC5B;EACZH,mBAAmB,CAAC,CAAC;EACrBjB,cAAc,CAAC+B,GAAG,CAACX,QAAQ,CAAC;EAC5B,OAAO,MAAM;IACXpB,cAAc,CAACgC,MAAM,CAACZ,QAAQ,CAAC;EACjC,CAAC;AACH;AAEAH,mBAAmB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import type { CodegenTypes, TurboModule } from 'react-native';
2
+ export type NativePushMessage = {
3
+ id?: string;
4
+ title?: string;
5
+ body?: string;
6
+ data: Object;
7
+ };
8
+ export type NativePushCredentials = {
9
+ platform: string;
10
+ token: string;
11
+ environment?: string;
12
+ };
13
+ export interface Spec extends TurboModule {
14
+ initialize(config: Object): Promise<void>;
15
+ getCredentials(): Promise<NativePushCredentials>;
16
+ startListening(): void;
17
+ readonly onMessage: CodegenTypes.EventEmitter<NativePushMessage>;
18
+ readonly onNotificationPress: CodegenTypes.EventEmitter<NativePushMessage>;
19
+ }
20
+ declare const _default: Spec;
21
+ export default _default;
22
+ //# sourceMappingURL=NativePushSignal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativePushSignal.d.ts","sourceRoot":"","sources":["../../../src/NativePushSignal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG9D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjD,cAAc,IAAI,IAAI,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACjE,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CAC5E;;AAED,wBAAoE"}
@@ -1,3 +1,3 @@
1
- export type { AndroidFirebaseConfig, OnMessageListener, PushCredentials, PushEnvironment, PushMessage, PushPlatform, } from './PushSignal.nitro.js';
1
+ export type { AndroidFirebaseConfig, OnMessageListener, PushCredentials, PushEnvironment, PushMessage, PushPlatform, } from './types.js';
2
2
  export { getCredentials, initialize, onMessage, onNotificationPress, } from './pushSignal';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,uBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,YAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AndroidFirebaseConfig, OnMessageListener, PushCredentials, PushMessage } from './PushSignal.nitro.js';
1
+ import type { AndroidFirebaseConfig, OnMessageListener, PushCredentials, PushMessage } from './types.js';
2
2
  export declare function initialize(_config?: AndroidFirebaseConfig): Promise<void>;
3
3
  export declare function getCredentials(): Promise<PushCredentials>;
4
4
  export declare function onMessage(_listener: OnMessageListener): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"pushSignal.d.ts","sourceRoot":"","sources":["../../../src/pushSignal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACZ,MAAM,uBAAoB,CAAC;AAE5B,wBAAsB,UAAU,CAC9B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAAG;AAEnB,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAE/D;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAElE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GACxC,MAAM,IAAI,CAEZ"}
1
+ {"version":3,"file":"pushSignal.d.ts","sourceRoot":"","sources":["../../../src/pushSignal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACZ,MAAM,YAAS,CAAC;AAEjB,wBAAsB,UAAU,CAC9B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAAG;AAEnB,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAE/D;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAElE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GACxC,MAAM,IAAI,CAEZ"}
@@ -1,4 +1,4 @@
1
- import type { AndroidFirebaseConfig, OnMessageListener, PushCredentials, PushMessage } from './PushSignal.nitro.js';
1
+ import type { AndroidFirebaseConfig, OnMessageListener, PushCredentials, PushMessage } from './types.js';
2
2
  export declare function initialize(config?: AndroidFirebaseConfig): Promise<void>;
3
3
  export declare function getCredentials(): Promise<PushCredentials>;
4
4
  export declare function onMessage(listener: OnMessageListener): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"pushSignal.native.d.ts","sourceRoot":"","sources":["../../../src/pushSignal.native.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,WAAW,EAEZ,MAAM,uBAAoB,CAAC;AAoC5B,wBAAgB,UAAU,CAAC,MAAM,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED,wBAAgB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAEzD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAMjE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GACvC,MAAM,IAAI,CAMZ"}
1
+ {"version":3,"file":"pushSignal.native.d.ts","sourceRoot":"","sources":["../../../src/pushSignal.native.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EAEf,WAAW,EAEZ,MAAM,YAAS,CAAC;AAyEjB,wBAAgB,UAAU,CAAC,MAAM,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED,wBAAgB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAEzD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAMjE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GACvC,MAAM,IAAI,CAMZ"}
@@ -0,0 +1,22 @@
1
+ /** JS name cannot be `android`: NDK defines `-DANDROID` and breaks native enums. */
2
+ export type PushPlatform = 'ios' | 'android_os';
3
+ export type PushEnvironment = 'sandbox' | 'production';
4
+ export interface PushCredentials {
5
+ platform: PushPlatform;
6
+ token: string;
7
+ environment?: PushEnvironment;
8
+ }
9
+ export interface PushMessage {
10
+ id?: string;
11
+ title?: string;
12
+ body?: string;
13
+ data: Record<string, string>;
14
+ }
15
+ export type OnMessageListener = (message: PushMessage) => void | Promise<void>;
16
+ export interface AndroidFirebaseConfig {
17
+ project_id?: string;
18
+ mobilesdk_app_id?: string;
19
+ current_key?: string;
20
+ project_number?: string;
21
+ }
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,YAAY,CAAC;AAChD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/E,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-push-signal",
3
- "version": "0.1.4",
3
+ "version": "0.1.7",
4
4
  "description": "Push",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -18,8 +18,6 @@
18
18
  "android",
19
19
  "ios",
20
20
  "cpp",
21
- "nitrogen",
22
- "nitro.json",
23
21
  "*.podspec",
24
22
  "react-native.config.js",
25
23
  "!ios/build",
@@ -37,7 +35,6 @@
37
35
  "example": "yarn workspace react-native-push-signal-example",
38
36
  "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
39
37
  "prepare": "bob build",
40
- "nitrogen": "nitrogen",
41
38
  "typecheck": "tsc",
42
39
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
43
40
  "test": "jest",
@@ -54,7 +51,7 @@
54
51
  "type": "git",
55
52
  "url": "git+https://antonseagull.com.git"
56
53
  },
57
- "author": "Anton Seagull <hi@antonseagull.com> (https://antonseagull.com)",
54
+ "author": "AntonSeagull <hi@antonseagull.com> (https://antonseagull.com)",
58
55
  "license": "MIT",
59
56
  "bugs": {
60
57
  "url": "https://antonseagull.com/issues"
@@ -82,12 +79,10 @@
82
79
  "eslint-plugin-prettier": "^5.5.6",
83
80
  "jest": "^29.7.0",
84
81
  "lefthook": "^2.1.9",
85
- "nitrogen": "^0.37.0",
86
82
  "prettier": "^3.8.3",
87
83
  "react": "19.2.3",
88
84
  "react-native": "0.85.0",
89
85
  "react-native-builder-bob": "^0.43.0",
90
- "react-native-nitro-modules": "^0.37.0",
91
86
  "react-native-web": "~0.21.2",
92
87
  "release-it": "^20.2.0",
93
88
  "turbo": "^2.9.16",
@@ -95,8 +90,7 @@
95
90
  },
96
91
  "peerDependencies": {
97
92
  "react": "*",
98
- "react-native": "*",
99
- "react-native-nitro-modules": "^0.37.0"
93
+ "react-native": "*"
100
94
  },
101
95
  "workspaces": [
102
96
  "example"
@@ -106,13 +100,6 @@
106
100
  "source": "src",
107
101
  "output": "lib",
108
102
  "targets": [
109
- [
110
- "custom",
111
- {
112
- "script": "nitrogen",
113
- "clean": "nitrogen/"
114
- }
115
- ],
116
103
  [
117
104
  "module",
118
105
  {
@@ -127,6 +114,14 @@
127
114
  ]
128
115
  ]
129
116
  },
117
+ "codegenConfig": {
118
+ "name": "PushSignalSpec",
119
+ "type": "modules",
120
+ "jsSrcsDir": "src",
121
+ "android": {
122
+ "javaPackageName": "com.pushsignal"
123
+ }
124
+ },
130
125
  "prettier": {
131
126
  "quoteProps": "consistent",
132
127
  "singleQuote": true,
@@ -140,7 +135,7 @@
140
135
  "customExportConditions": [
141
136
  "require",
142
137
  "react-native",
143
- "<%- project.sourceCondition -%>"
138
+ "react-native-push-signal-source"
144
139
  ]
145
140
  },
146
141
  "modulePathIgnorePatterns": [
@@ -173,8 +168,8 @@
173
168
  }
174
169
  },
175
170
  "create-react-native-library": {
176
- "type": "nitro-module",
177
- "languages": "kotlin-swift",
171
+ "type": "turbo-module",
172
+ "languages": "kotlin-objc",
178
173
  "tools": [
179
174
  "eslint",
180
175
  "jest",
@@ -0,0 +1,25 @@
1
+ import type { CodegenTypes, TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ export type NativePushMessage = {
5
+ id?: string;
6
+ title?: string;
7
+ body?: string;
8
+ data: Object;
9
+ };
10
+
11
+ export type NativePushCredentials = {
12
+ platform: string;
13
+ token: string;
14
+ environment?: string;
15
+ };
16
+
17
+ export interface Spec extends TurboModule {
18
+ initialize(config: Object): Promise<void>;
19
+ getCredentials(): Promise<NativePushCredentials>;
20
+ startListening(): void;
21
+ readonly onMessage: CodegenTypes.EventEmitter<NativePushMessage>;
22
+ readonly onNotificationPress: CodegenTypes.EventEmitter<NativePushMessage>;
23
+ }
24
+
25
+ export default TurboModuleRegistry.getEnforcing<Spec>('PushSignal');
package/src/index.tsx CHANGED
@@ -5,7 +5,7 @@ export type {
5
5
  PushEnvironment,
6
6
  PushMessage,
7
7
  PushPlatform,
8
- } from './PushSignal.nitro';
8
+ } from './types';
9
9
  export {
10
10
  getCredentials,
11
11
  initialize,
@@ -1,19 +1,55 @@
1
- import { NitroModules } from 'react-native-nitro-modules';
1
+ import NativePushSignal from './NativePushSignal';
2
2
  import type {
3
3
  AndroidFirebaseConfig,
4
4
  OnMessageListener,
5
5
  PushCredentials,
6
+ PushEnvironment,
6
7
  PushMessage,
7
- PushSignal,
8
- } from './PushSignal.nitro';
9
-
10
- const PushSignalHybridObject =
11
- NitroModules.createHybridObject<PushSignal>('PushSignal');
8
+ PushPlatform,
9
+ } from './types';
12
10
 
13
11
  const messageListeners = new Set<OnMessageListener>();
14
12
  const pressListeners = new Set<(message: PushMessage) => void>();
15
13
  let nativeCallbacksBound = false;
16
14
 
15
+ function normalizeMessage(raw: {
16
+ id?: string;
17
+ title?: string;
18
+ body?: string;
19
+ data: Object;
20
+ }): PushMessage {
21
+ const data: Record<string, string> = {};
22
+ if (raw.data && typeof raw.data === 'object') {
23
+ for (const [key, value] of Object.entries(
24
+ raw.data as Record<string, unknown>
25
+ )) {
26
+ if (value == null) {
27
+ continue;
28
+ }
29
+ data[key] = typeof value === 'string' ? value : String(value);
30
+ }
31
+ }
32
+
33
+ return {
34
+ id: raw.id,
35
+ title: raw.title,
36
+ body: raw.body,
37
+ data,
38
+ };
39
+ }
40
+
41
+ function normalizeCredentials(raw: {
42
+ platform: string;
43
+ token: string;
44
+ environment?: string;
45
+ }): PushCredentials {
46
+ return {
47
+ platform: raw.platform as PushPlatform,
48
+ token: raw.token,
49
+ environment: raw.environment as PushEnvironment | undefined,
50
+ };
51
+ }
52
+
17
53
  function bindNativeCallbacks() {
18
54
  if (nativeCallbacksBound) {
19
55
  return;
@@ -21,32 +57,34 @@ function bindNativeCallbacks() {
21
57
 
22
58
  nativeCallbacksBound = true;
23
59
 
24
- PushSignalHybridObject.setOnMessage(async (message) => {
25
- const listeners = [...messageListeners];
26
- const results = await Promise.all(
27
- listeners.map(async (listener) => {
28
- try {
29
- return await listener(message);
30
- } catch {
31
- return false;
32
- }
33
- })
34
- );
35
-
36
- return results.some((result) => result === true);
60
+ NativePushSignal.onMessage((raw) => {
61
+ const message = normalizeMessage(raw);
62
+ for (const listener of [...messageListeners]) {
63
+ try {
64
+ Promise.resolve(listener(message)).then(
65
+ () => undefined,
66
+ () => undefined
67
+ );
68
+ } catch {
69
+ // Ignore listener failures so one bad subscriber cannot break delivery.
70
+ }
71
+ }
37
72
  });
38
73
 
39
- PushSignalHybridObject.setOnNotificationPress((message) => {
74
+ NativePushSignal.onNotificationPress((raw) => {
75
+ const message = normalizeMessage(raw);
40
76
  pressListeners.forEach((listener) => listener(message));
41
77
  });
78
+
79
+ NativePushSignal.startListening();
42
80
  }
43
81
 
44
82
  export function initialize(config: AndroidFirebaseConfig = {}): Promise<void> {
45
- return PushSignalHybridObject.initialize(config);
83
+ return NativePushSignal.initialize(config);
46
84
  }
47
85
 
48
86
  export function getCredentials(): Promise<PushCredentials> {
49
- return PushSignalHybridObject.getCredentials();
87
+ return NativePushSignal.getCredentials().then(normalizeCredentials);
50
88
  }
51
89
 
52
90
  export function onMessage(listener: OnMessageListener): () => void {
@@ -3,7 +3,7 @@ import type {
3
3
  OnMessageListener,
4
4
  PushCredentials,
5
5
  PushMessage,
6
- } from './PushSignal.nitro';
6
+ } from './types';
7
7
 
8
8
  export async function initialize(
9
9
  _config: AndroidFirebaseConfig = {}
package/src/types.ts ADDED
@@ -0,0 +1,25 @@
1
+ /** JS name cannot be `android`: NDK defines `-DANDROID` and breaks native enums. */
2
+ export type PushPlatform = 'ios' | 'android_os';
3
+ export type PushEnvironment = 'sandbox' | 'production';
4
+
5
+ export interface PushCredentials {
6
+ platform: PushPlatform;
7
+ token: string;
8
+ environment?: PushEnvironment;
9
+ }
10
+
11
+ export interface PushMessage {
12
+ id?: string;
13
+ title?: string;
14
+ body?: string;
15
+ data: Record<string, string>;
16
+ }
17
+
18
+ export type OnMessageListener = (message: PushMessage) => void | Promise<void>;
19
+
20
+ export interface AndroidFirebaseConfig {
21
+ project_id?: string;
22
+ mobilesdk_app_id?: string;
23
+ current_key?: string;
24
+ project_number?: string;
25
+ }
@@ -1,24 +0,0 @@
1
- project(pushsignal)
2
- cmake_minimum_required(VERSION 3.9.0)
3
-
4
- set(PACKAGE_NAME pushsignal)
5
- set(CMAKE_VERBOSE_MAKEFILE ON)
6
- set(CMAKE_CXX_STANDARD 20)
7
-
8
- # Define C++ library and add all sources
9
- add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp)
10
-
11
- # Add Nitrogen specs :)
12
- include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/pushsignal+autolinking.cmake)
13
-
14
- # Set up local includes
15
- include_directories("src/main/cpp" "../cpp")
16
-
17
- find_library(LOG_LIB log)
18
-
19
- # Link all libraries together
20
- target_link_libraries(
21
- ${PACKAGE_NAME}
22
- ${LOG_LIB}
23
- android # <-- Android core
24
- )
@@ -1,11 +0,0 @@
1
- #include <jni.h>
2
- #include "pushsignalOnLoad.hpp"
3
-
4
- #include <fbjni/fbjni.h>
5
-
6
-
7
- JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
8
- return facebook::jni::initialize(vm, []() {
9
- margelo::nitro::pushsignal::registerAllNatives();
10
- });
11
- }
@@ -1,38 +0,0 @@
1
- package com.margelo.nitro.pushsignal
2
-
3
- import com.facebook.proguard.annotations.DoNotStrip
4
- import com.margelo.nitro.core.Promise
5
-
6
- @DoNotStrip
7
- class PushSignal : HybridPushSignalSpec() {
8
- override fun initialize(config: AndroidFirebaseConfig): Promise<Unit> {
9
- val promise = Promise<Unit>()
10
- PushSignalCenter.initialize(config) { error ->
11
- if (error == null) {
12
- promise.resolve(Unit)
13
- } else {
14
- promise.reject(error)
15
- }
16
- }
17
- return promise
18
- }
19
-
20
- override fun getCredentials(): Promise<PushCredentials> {
21
- return Promise.async {
22
- val token = PushSignalCenter.fetchToken()
23
- PushCredentials(
24
- PushPlatform.ANDROID_OS,
25
- token,
26
- null
27
- )
28
- }
29
- }
30
-
31
- override fun setOnMessage(callback: (message: PushMessage) -> Promise<Promise<Boolean>>) {
32
- PushSignalCenter.setOnMessage(callback)
33
- }
34
-
35
- override fun setOnNotificationPress(callback: (message: PushMessage) -> Unit) {
36
- PushSignalCenter.setOnNotificationPress(callback)
37
- }
38
- }
@@ -1,22 +0,0 @@
1
- package com.margelo.nitro.pushsignal
2
-
3
- import com.facebook.react.BaseReactPackage
4
- import com.facebook.react.bridge.NativeModule
5
- import com.facebook.react.bridge.ReactApplicationContext
6
- import com.facebook.react.module.model.ReactModuleInfoProvider
7
-
8
- class PushSignalPackage : BaseReactPackage() {
9
- override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
10
- return null
11
- }
12
-
13
- override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
14
- return ReactModuleInfoProvider { HashMap() }
15
- }
16
-
17
- companion object {
18
- init {
19
- System.loadLibrary("pushsignal")
20
- }
21
- }
22
- }
@@ -1,29 +0,0 @@
1
- import NitroModules
2
-
3
- class PushSignal: HybridPushSignalSpec {
4
- override init() {
5
- super.init()
6
- PushSignalCenter.shared.install()
7
- }
8
-
9
- func initialize(config: AndroidFirebaseConfig) throws -> Promise<Void> {
10
- _ = config
11
- return Promise.async {
12
- ()
13
- }
14
- }
15
-
16
- func getCredentials() throws -> Promise<PushCredentials> {
17
- return Promise.async {
18
- try await PushSignalCenter.shared.fetchCredentials()
19
- }
20
- }
21
-
22
- func setOnMessage(callback: @escaping (PushMessage) -> Promise<Promise<Bool>>) throws {
23
- PushSignalCenter.shared.onMessage = callback
24
- }
25
-
26
- func setOnNotificationPress(callback: @escaping (PushMessage) -> Void) throws {
27
- PushSignalCenter.shared.onNotificationPress = callback
28
- }
29
- }