notifly-sdk 3.1.2 → 3.2.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 (64) hide show
  1. package/android/build.gradle +6 -6
  2. package/android/gradle.properties +5 -5
  3. package/android/src/main/AndroidManifest.xml +1 -1
  4. package/android/src/main/java/{com/notiflysdk → tech/notifly/rn}/NotiflySdkModule.kt +52 -14
  5. package/android/src/main/java/{com/notiflysdk → tech/notifly/rn}/NotiflySdkPackage.kt +1 -1
  6. package/android/src/main/java/tech/notifly/rn/NotiflySdkUtils.kt +79 -0
  7. package/android/src/newarch/NotiflySdkSpec.kt +1 -1
  8. package/android/src/oldarch/NotiflySdkSpec.kt +2 -2
  9. package/ios/NotiflySdk.m +1 -5
  10. package/ios/NotiflySdk.swift +3 -8
  11. package/lib/commonjs/{NativeNotiflySdk.js → NativeNotiflyReactNativeSdk.js} +2 -2
  12. package/lib/commonjs/NativeNotiflyReactNativeSdk.js.map +1 -0
  13. package/lib/commonjs/constants.js +12 -0
  14. package/lib/commonjs/constants.js.map +1 -0
  15. package/lib/commonjs/events/EventReceiver.js +60 -0
  16. package/lib/commonjs/events/EventReceiver.js.map +1 -0
  17. package/lib/commonjs/index.js +29 -45
  18. package/lib/commonjs/index.js.map +1 -1
  19. package/lib/commonjs/types/index.js +17 -0
  20. package/lib/commonjs/types/index.js.map +1 -0
  21. package/lib/commonjs/types/notification.js +14 -0
  22. package/lib/commonjs/types/notification.js.map +1 -0
  23. package/lib/module/NativeNotiflyReactNativeSdk.js +3 -0
  24. package/lib/module/NativeNotiflyReactNativeSdk.js.map +1 -0
  25. package/lib/module/constants.js +5 -0
  26. package/lib/module/constants.js.map +1 -0
  27. package/lib/module/events/EventReceiver.js +53 -0
  28. package/lib/module/events/EventReceiver.js.map +1 -0
  29. package/lib/module/index.js +27 -41
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/module/types/index.js +2 -0
  32. package/lib/module/types/index.js.map +1 -0
  33. package/lib/module/types/notification.js +7 -0
  34. package/lib/module/types/notification.js.map +1 -0
  35. package/lib/typescript/{NativeNotiflySdk.d.ts → NativeNotiflyReactNativeSdk.d.ts} +5 -8
  36. package/lib/typescript/NativeNotiflyReactNativeSdk.d.ts.map +1 -0
  37. package/lib/typescript/constants.d.ts +4 -0
  38. package/lib/typescript/constants.d.ts.map +1 -0
  39. package/lib/typescript/events/EventReceiver.d.ts +11 -0
  40. package/lib/typescript/events/EventReceiver.d.ts.map +1 -0
  41. package/lib/typescript/index.d.ts +6 -16
  42. package/lib/typescript/index.d.ts.map +1 -1
  43. package/lib/typescript/types/index.d.ts +13 -0
  44. package/lib/typescript/types/index.d.ts.map +1 -0
  45. package/lib/typescript/types/notification.d.ts +28 -0
  46. package/lib/typescript/types/notification.d.ts.map +1 -0
  47. package/package.json +5 -5
  48. package/src/{NativeNotiflySdk.ts → NativeNotiflyReactNativeSdk.ts} +5 -10
  49. package/src/constants.ts +3 -0
  50. package/src/events/EventReceiver.ts +67 -0
  51. package/src/index.tsx +59 -56
  52. package/src/types/index.ts +15 -0
  53. package/src/types/notification.ts +40 -0
  54. package/lib/commonjs/NativeNotiflySdk.js.map +0 -1
  55. package/lib/commonjs/types.js +0 -2
  56. package/lib/commonjs/types.js.map +0 -1
  57. package/lib/module/NativeNotiflySdk.js +0 -3
  58. package/lib/module/NativeNotiflySdk.js.map +0 -1
  59. package/lib/module/types.js +0 -2
  60. package/lib/module/types.js.map +0 -1
  61. package/lib/typescript/NativeNotiflySdk.d.ts.map +0 -1
  62. package/lib/typescript/types.d.ts +0 -7
  63. package/lib/typescript/types.d.ts.map +0 -1
  64. package/src/types.ts +0 -7
@@ -0,0 +1,53 @@
1
+ import { NativeEventEmitter } from 'react-native';
2
+ import { EventNames } from '../constants';
3
+ export default class EventReceiver {
4
+ eventListenerArrayMap = new Map();
5
+ constructor(nativeNotiflySdk) {
6
+ this.nativeNotiflySdk = nativeNotiflySdk;
7
+ this.notiflyEventEmitter = new NativeEventEmitter(this.nativeNotiflySdk);
8
+ }
9
+ addEventListener(eventName, handler) {
10
+ const existings = this.eventListenerArrayMap.get(eventName);
11
+ if (existings && existings.length > 0) {
12
+ existings.push(handler);
13
+ } else {
14
+ this.eventListenerArrayMap.set(eventName, [handler]);
15
+ this.notiflyEventEmitter.addListener(eventName, event => {
16
+ const listeners = this.eventListenerArrayMap.get(eventName);
17
+ if (listeners) {
18
+ listeners.forEach(listener => listener(this.transformEventAccordingToType(eventName, event)));
19
+ }
20
+ });
21
+ }
22
+ }
23
+ removeEventListener(eventName, handler) {
24
+ const existings = this.eventListenerArrayMap.get(eventName);
25
+ if (existings) {
26
+ const index = existings.indexOf(handler);
27
+ if (index !== -1) {
28
+ existings.splice(index, 1);
29
+ }
30
+ }
31
+ }
32
+ transformEventAccordingToType(eventName, payload) {
33
+ if (eventName === EventNames.NOTIFICATION_CLICKED) {
34
+ var _payload$notification;
35
+ // Transform rawPayload as Object as it is stringified in native code
36
+ const raw = payload === null || payload === void 0 ? void 0 : (_payload$notification = payload.notification) === null || _payload$notification === void 0 ? void 0 : _payload$notification.rawPayload;
37
+ try {
38
+ return raw && typeof raw === 'string' ? {
39
+ ...payload,
40
+ notification: {
41
+ ...payload.notification,
42
+ rawPayload: JSON.parse(raw)
43
+ }
44
+ } : payload;
45
+ } catch (e) {
46
+ console.error('[Notifly React Native SDK] Error while parsing rawPayload. Payload will be returned as is.');
47
+ return payload;
48
+ }
49
+ }
50
+ return payload;
51
+ }
52
+ }
53
+ //# sourceMappingURL=EventReceiver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeEventEmitter","EventNames","EventReceiver","eventListenerArrayMap","Map","constructor","nativeNotiflySdk","notiflyEventEmitter","addEventListener","eventName","handler","existings","get","length","push","set","addListener","event","listeners","forEach","listener","transformEventAccordingToType","removeEventListener","index","indexOf","splice","payload","NOTIFICATION_CLICKED","_payload$notification","raw","notification","rawPayload","JSON","parse","e","console","error"],"sourceRoot":"../../../src","sources":["events/EventReceiver.ts"],"mappings":"AAAA,SAASA,kBAAkB,QAA2B,cAAc;AACpE,SAASC,UAAU,QAAQ,cAAc;AAIzC,eAAe,MAAMC,aAAa,CAAC;EAGzBC,qBAAqB,GAAsC,IAAIC,GAAG,CAAC,CAAC;EAE5EC,WAAWA,CAACC,gBAA8B,EAAE;IAC1C,IAAI,CAACA,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,mBAAmB,GAAG,IAAIP,kBAAkB,CAAC,IAAI,CAACM,gBAAgB,CAAC;EAC1E;EAEAE,gBAAgBA,CAAIC,SAAiB,EAAEC,OAA2B,EAAE;IAClE,MAAMC,SAAS,GAAG,IAAI,CAACR,qBAAqB,CAACS,GAAG,CAACH,SAAS,CAAC;IAC3D,IAAIE,SAAS,IAAIA,SAAS,CAACE,MAAM,GAAG,CAAC,EAAE;MACrCF,SAAS,CAACG,IAAI,CAACJ,OAAO,CAAC;IACzB,CAAC,MAAM;MACL,IAAI,CAACP,qBAAqB,CAACY,GAAG,CAACN,SAAS,EAAE,CAACC,OAAO,CAAC,CAAC;MACpD,IAAI,CAACH,mBAAmB,CAACS,WAAW,CAACP,SAAS,EAAGQ,KAAK,IAAK;QACzD,MAAMC,SAAS,GAAG,IAAI,CAACf,qBAAqB,CAACS,GAAG,CAACH,SAAS,CAAC;QAC3D,IAAIS,SAAS,EAAE;UACbA,SAAS,CAACC,OAAO,CAAEC,QAAQ,IACzBA,QAAQ,CAAC,IAAI,CAACC,6BAA6B,CAACZ,SAAS,EAAEQ,KAAK,CAAC,CAC/D,CAAC;QACH;MACF,CAAC,CAAC;IACJ;EACF;EAEAK,mBAAmBA,CAAIb,SAAiB,EAAEC,OAA2B,EAAE;IACrE,MAAMC,SAAS,GAAG,IAAI,CAACR,qBAAqB,CAACS,GAAG,CAACH,SAAS,CAAC;IAC3D,IAAIE,SAAS,EAAE;MACb,MAAMY,KAAK,GAAGZ,SAAS,CAACa,OAAO,CAACd,OAAO,CAAC;MACxC,IAAIa,KAAK,KAAK,CAAC,CAAC,EAAE;QAChBZ,SAAS,CAACc,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MAC5B;IACF;EACF;EAEQF,6BAA6BA,CAACZ,SAAiB,EAAEiB,OAAY,EAAE;IACrE,IAAIjB,SAAS,KAAKR,UAAU,CAAC0B,oBAAoB,EAAE;MAAA,IAAAC,qBAAA;MACjD;MACA,MAAMC,GAAG,GAAGH,OAAO,aAAPA,OAAO,wBAAAE,qBAAA,GAAPF,OAAO,CAAEI,YAAY,cAAAF,qBAAA,uBAArBA,qBAAA,CAAuBG,UAAU;MAC7C,IAAI;QACF,OAAOF,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,GACjC;UACE,GAAGH,OAAO;UACVI,YAAY,EAAE;YACZ,GAAGJ,OAAO,CAACI,YAAY;YACvBC,UAAU,EAAEC,IAAI,CAACC,KAAK,CAACJ,GAAG;UAC5B;QACF,CAAC,GACDH,OAAO;MACb,CAAC,CAAC,OAAOQ,CAAC,EAAE;QACVC,OAAO,CAACC,KAAK,CACX,4FACF,CAAC;QACD,OAAOV,OAAO;MAChB;IACF;IAEA,OAAOA,OAAO;EAChB;AACF"}
@@ -1,4 +1,6 @@
1
1
  import { NativeModules, Platform } from 'react-native';
2
+ import EventReceiver from './events/EventReceiver';
3
+ import { EventNames } from './constants';
2
4
  const LINKING_ERROR = `The package 'notifly-sdk' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
3
5
  ios: "- You have run 'pod install'\n",
4
6
  default: ''
@@ -6,66 +8,52 @@ const LINKING_ERROR = `The package 'notifly-sdk' doesn't seem to be linked. Make
6
8
 
7
9
  // @ts-expect-error
8
10
  const isTurboModuleEnabled = global.__turboModuleProxy != null;
9
- const NotiflySdkModule = isTurboModuleEnabled ? require('./NativeNotiflySdk').default : NativeModules.NotiflySdk;
10
- const NotiflySdk = NotiflySdkModule ? NotiflySdkModule : new Proxy({}, {
11
+ const NotiflyReactNativeSdkModule = isTurboModuleEnabled ? require('./NativeNotiflyReactNativeSdk').default : NativeModules.NotiflyReactNativeSdk;
12
+ const NotiflyReactNativeSdk = NotiflyReactNativeSdkModule ? NotiflyReactNativeSdkModule : new Proxy({}, {
11
13
  get() {
12
14
  throw new Error(LINKING_ERROR);
13
15
  }
14
16
  });
15
- export function multiply(a, b) {
16
- return NotiflySdk.multiply(a, b);
17
- }
18
- export function initialize(projectId, username, password) {
19
- let useCustomClickHandler = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
20
- // @deprecated useCustomClickHandler is deprecated since version 2.3.0
21
- if (typeof useCustomClickHandler !== 'undefined') {
22
- console.warn('Warning: useCustomClickHandler of notifly.initialize is deprecated and will be removed in the next major release.');
23
- }
24
- return NotiflySdk.initialize(projectId, username, password);
17
+ const eventReceiver = NotiflyReactNativeSdkModule && Platform.OS === 'android' ? new EventReceiver(NotiflyReactNativeSdkModule) : null;
18
+ let isNativeNotificationClickListenerRegistered = false;
19
+ export function initialize(params) {
20
+ return NotiflyReactNativeSdk.initialize(params.projectId, params.username, params.password);
25
21
  }
26
22
  export function setUserId(userId) {
27
- return NotiflySdk.setUserId(userId);
23
+ return NotiflyReactNativeSdk.setUserId(userId);
28
24
  }
29
25
  export function setUserProperties(properties) {
30
- return NotiflySdk.setUserProperties(properties);
26
+ return NotiflyReactNativeSdk.setUserProperties(properties);
31
27
  }
32
28
  export function trackEvent(eventName) {
33
29
  let eventParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
34
30
  let segmentationEventParamKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
35
- return NotiflySdk.trackEvent(eventName, eventParams, segmentationEventParamKeys);
31
+ return NotiflyReactNativeSdk.trackEvent(eventName, eventParams, segmentationEventParamKeys);
36
32
  }
37
33
  export function setLogLevel(logLevel) {
38
34
  // only implemented on Android
39
35
  if (Platform.OS === 'android') {
40
- return NotiflySdk.setLogLevel(logLevel);
36
+ return NotiflyReactNativeSdk.setLogLevel(logLevel);
37
+ } else {
38
+ console.error('[Notifly React Native SDK] setLogLevel is only supported on Android.');
41
39
  }
42
40
  return Promise.resolve();
43
41
  }
44
-
45
- /**
46
- * @deprecated Since version 2.3.0.
47
- */
48
- export function notiflyBackgroundHandler(_remoteMessage) {
49
- console.warn('Warning: notifly.notiflyBackgroundHandler(remoteMessage) is deprecated and will be removed in the next major release. You do not need to call this method anymore. remoteMessage is now handled automatically.');
50
- return Promise.resolve();
51
- }
52
-
53
- /**
54
- * @deprecated Since version 2.3.0.
55
- */
56
- export function setNotiflyBackgroundMessageHandler() {
57
- console.warn('Warning: notifly.setNotiflyBackgroundMessageHandler() is deprecated and will be removed in the next major release. You do not need to call this method anymore. remoteMessage is now handled automatically.');
58
- return Promise.resolve();
59
- }
60
42
  export function disableInAppMessage() {
61
- return NotiflySdk.disableInAppMessage();
43
+ return NotiflyReactNativeSdk.disableInAppMessage();
62
44
  }
63
- export function registerFCMToken(token) {
64
- if (Platform.OS === 'android') {
65
- console.warn('Warning: registerFCMToken is only supported on iOS.');
66
- return Promise.resolve();
45
+ export function addNotificationClickListener(listener) {
46
+ if (eventReceiver) {
47
+ // only implemented on Android
48
+ eventReceiver.addEventListener(EventNames.NOTIFICATION_CLICKED, listener);
49
+ if (!isNativeNotificationClickListenerRegistered) {
50
+ NotiflyReactNativeSdk.addNotificationClickListener();
51
+ isNativeNotificationClickListenerRegistered = true;
52
+ }
53
+ } else {
54
+ console.error('[Notifly React Native SDK] addNotificationClickListener is only supported on Android.');
67
55
  }
68
- return NotiflySdk.registerFCMToken(token);
56
+ return Promise.resolve();
69
57
  }
70
58
  const notifly = {
71
59
  initialize,
@@ -73,10 +61,8 @@ const notifly = {
73
61
  setUserProperties,
74
62
  trackEvent,
75
63
  setLogLevel,
76
- notiflyBackgroundHandler,
77
- setNotiflyBackgroundMessageHandler,
78
64
  disableInAppMessage,
79
- registerFCMToken
65
+ addNotificationClickListener
80
66
  };
81
67
  export default notifly;
82
68
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","NotiflySdkModule","require","NotiflySdk","Proxy","get","Error","multiply","a","b","initialize","projectId","username","password","useCustomClickHandler","arguments","length","undefined","console","warn","setUserId","userId","setUserProperties","properties","trackEvent","eventName","eventParams","segmentationEventParamKeys","setLogLevel","logLevel","OS","Promise","resolve","notiflyBackgroundHandler","_remoteMessage","setNotiflyBackgroundMessageHandler","disableInAppMessage","registerFCMToken","token","notifly"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","Platform","EventReceiver","EventNames","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","NotiflyReactNativeSdkModule","require","NotiflyReactNativeSdk","Proxy","get","Error","eventReceiver","OS","isNativeNotificationClickListenerRegistered","initialize","params","projectId","username","password","setUserId","userId","setUserProperties","properties","trackEvent","eventName","eventParams","arguments","length","undefined","segmentationEventParamKeys","setLogLevel","logLevel","console","error","Promise","resolve","disableInAppMessage","addNotificationClickListener","listener","addEventListener","NOTIFICATION_CLICKED","notifly"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './notification';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/index.ts"],"mappings":"AAAA,cAAc,gBAAgB"}
@@ -0,0 +1,7 @@
1
+ export let OSNotificationImportance = /*#__PURE__*/function (OSNotificationImportance) {
2
+ OSNotificationImportance[OSNotificationImportance["LOW"] = 0] = "LOW";
3
+ OSNotificationImportance[OSNotificationImportance["NORMAL"] = 1] = "NORMAL";
4
+ OSNotificationImportance[OSNotificationImportance["HIGH"] = 2] = "HIGH";
5
+ return OSNotificationImportance;
6
+ }({});
7
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OSNotificationImportance"],"sourceRoot":"../../../src","sources":["types/notification.ts"],"mappings":"AAIA,WAAYA,wBAAwB,0BAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAA,OAAxBA,wBAAwB;AAAA"}
@@ -1,17 +1,14 @@
1
- import type { TurboModule } from 'react-native';
1
+ import { type TurboModule } from 'react-native';
2
2
  import { type UserProperties, type EventProperties } from './types';
3
3
  export interface Spec extends TurboModule {
4
- multiply(a: number, b: number): Promise<number>;
5
- initialize(projectId: string, username: string, password: string, useCustomClickHandler: boolean | undefined): Promise<void>;
6
- setUserId(userId: string | undefined): Promise<void>;
4
+ initialize(projectId: string, username: string, password: string): Promise<void>;
5
+ setUserId(userId: string | null | undefined): Promise<void>;
7
6
  setUserProperties(userProperties: UserProperties): Promise<void>;
8
7
  trackEvent(eventName: string, eventParams: EventProperties | null | undefined, segmentationEventParamKeys: string[] | undefined | null): Promise<void>;
9
8
  setLogLevel(logLevel: number): Promise<void>;
10
- notiflyBackgroundHandler(_remoteMessage: any): Promise<void>;
11
- setNotificationOpenedHandler(): Promise<void>;
12
9
  disableInAppMessage(): Promise<void>;
13
- registerFCMToken(token: string): Promise<void>;
10
+ addNotificationClickListener(): Promise<void>;
14
11
  }
15
12
  declare const _default: Spec;
16
13
  export default _default;
17
- //# sourceMappingURL=NativeNotiflySdk.d.ts.map
14
+ //# sourceMappingURL=NativeNotiflyReactNativeSdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeNotiflyReactNativeSdk.d.ts","sourceRoot":"","sources":["../../src/NativeNotiflyReactNativeSdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC/C,0BAA0B,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;;AAED,wBAA+E"}
@@ -0,0 +1,4 @@
1
+ export declare enum EventNames {
2
+ NOTIFICATION_CLICKED = "Notifly#NotificationClicked"
3
+ }
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,oBAAoB,gCAAgC;CACrD"}
@@ -0,0 +1,11 @@
1
+ import { type NativeModule } from 'react-native';
2
+ export default class EventReceiver {
3
+ private nativeNotiflySdk;
4
+ private notiflyEventEmitter;
5
+ private eventListenerArrayMap;
6
+ constructor(nativeNotiflySdk: NativeModule);
7
+ addEventListener<T>(eventName: string, handler: (event: T) => void): void;
8
+ removeEventListener<T>(eventName: string, handler: (event: T) => void): void;
9
+ private transformEventAccordingToType;
10
+ }
11
+ //# sourceMappingURL=EventReceiver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventReceiver.d.ts","sourceRoot":"","sources":["../../../src/events/EventReceiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKrE,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,qBAAqB,CAAgD;gBAEjE,gBAAgB,EAAE,YAAY;IAK1C,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI;IAiBlE,mBAAmB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI;IAUrE,OAAO,CAAC,6BAA6B;CAwBtC"}
@@ -1,30 +1,20 @@
1
- import { type UserProperties, type EventProperties } from './types';
2
- export declare function multiply(a: number, b: number): Promise<number>;
3
- export declare function initialize(projectId: string, username: string, password: string, useCustomClickHandler?: boolean | undefined): Promise<void>;
4
- export declare function setUserId(userId: string | undefined): Promise<void>;
1
+ import type { InitializeParams, EventProperties, UserProperties, NotificationClickListener } from './types';
2
+ export type * from './types';
3
+ export declare function initialize(params: InitializeParams): Promise<void>;
4
+ export declare function setUserId(userId: string | null | undefined): Promise<void>;
5
5
  export declare function setUserProperties(properties: UserProperties): Promise<void>;
6
6
  export declare function trackEvent(eventName: string, eventParams?: EventProperties | null | undefined, segmentationEventParamKeys?: string[] | undefined | null): Promise<void>;
7
7
  export declare function setLogLevel(logLevel: number): Promise<void>;
8
- /**
9
- * @deprecated Since version 2.3.0.
10
- */
11
- export declare function notiflyBackgroundHandler(_remoteMessage: any): Promise<void>;
12
- /**
13
- * @deprecated Since version 2.3.0.
14
- */
15
- export declare function setNotiflyBackgroundMessageHandler(): Promise<void>;
16
8
  export declare function disableInAppMessage(): Promise<void>;
17
- export declare function registerFCMToken(token: string): Promise<void>;
9
+ export declare function addNotificationClickListener(listener: NotificationClickListener): Promise<void>;
18
10
  declare const notifly: {
19
11
  initialize: typeof initialize;
20
12
  setUserId: typeof setUserId;
21
13
  setUserProperties: typeof setUserProperties;
22
14
  trackEvent: typeof trackEvent;
23
15
  setLogLevel: typeof setLogLevel;
24
- notiflyBackgroundHandler: typeof notiflyBackgroundHandler;
25
- setNotiflyBackgroundMessageHandler: typeof setNotiflyBackgroundMessageHandler;
26
16
  disableInAppMessage: typeof disableInAppMessage;
27
- registerFCMToken: typeof registerFCMToken;
17
+ addNotificationClickListener: typeof addNotificationClickListener;
28
18
  };
29
19
  export default notifly;
30
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AA0BpE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9D;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,qBAAqB,GAAE,OAAO,GAAG,SAAqB,GACrD,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,eAAe,GAAG,IAAI,GAAG,SAAqB,EAC3D,0BAA0B,GAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAW,GAC7D,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,OAAO,CAAC,IAAI,CAAC,CAKlE;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7D;AAED,QAAA,MAAM,OAAO;;;;;;;;;;CAUZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,yBAAyB,EAE1B,MAAM,SAAS,CAAC;AAIjB,mBAAmB,SAAS,CAAC;AAiC7B,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,eAAe,GAAG,IAAI,GAAG,SAAqB,EAC3D,0BAA0B,GAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAW,GAC7D,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3D;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,yBAAyB,GAClC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,QAAA,MAAM,OAAO;;;;;;;;CAQZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from './notification';
2
+ export interface InitializeParams {
3
+ projectId: string;
4
+ username: string;
5
+ password: string;
6
+ }
7
+ export interface UserProperties {
8
+ [key: string]: any;
9
+ }
10
+ export interface EventProperties {
11
+ [key: string]: any;
12
+ }
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,28 @@
1
+ export type NotificationClickListener = (event: OSNotificationClickEvent) => void;
2
+ export declare enum OSNotificationImportance {
3
+ LOW = 0,
4
+ NORMAL = 1,
5
+ HIGH = 2
6
+ }
7
+ export interface OSNotificationClickEvent {
8
+ notification: OSNotification;
9
+ }
10
+ export interface OSNotification {
11
+ notiflyMessageId?: string;
12
+ androidNotificationId?: number;
13
+ campaignId?: string;
14
+ title?: string;
15
+ body?: string;
16
+ importance?: OSNotificationImportance;
17
+ url?: string;
18
+ imageUrl?: string;
19
+ sentTime?: number;
20
+ ttl?: number;
21
+ customData?: {
22
+ [key: string]: any;
23
+ };
24
+ rawPayload?: {
25
+ [key: string]: any;
26
+ };
27
+ }
28
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../src/types/notification.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,CACtC,KAAK,EAAE,wBAAwB,KAC5B,IAAI,CAAC;AAEV,oBAAY,wBAAwB;IAClC,GAAG,IAAI;IACP,MAAM,IAAI;IACV,IAAI,IAAI;CACT;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAE7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,wBAAwB,CAAC;IAEtC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAEpC,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACrC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "notifly-sdk",
3
- "version": "3.1.2",
4
- "description": "test",
3
+ "version": "3.2.0",
4
+ "description": "Notifly SDK for React Native",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/index.d.ts",
@@ -42,7 +42,7 @@
42
42
  "android"
43
43
  ],
44
44
  "repository": "https://github.com/team-michael/notifly-react-native-sdk",
45
- "author": "minyonglee <minyong@workmichael.com> (https://github.com/minyonglee)",
45
+ "author": "Grey Box Inc.",
46
46
  "license": "MIT",
47
47
  "bugs": {
48
48
  "url": "https://github.com/team-michael/notifly-react-native-sdk/issues"
@@ -71,7 +71,7 @@
71
71
  "react-native": "0.71.8",
72
72
  "react-native-builder-bob": "^0.20.4",
73
73
  "release-it": "^15.0.0",
74
- "typescript": "^5.0.2"
74
+ "typescript": "^5.4.2"
75
75
  },
76
76
  "resolutions": {
77
77
  "@types/react": "17.0.21"
@@ -157,7 +157,7 @@
157
157
  ]
158
158
  },
159
159
  "codegenConfig": {
160
- "name": "RNNotiflySdkSpec",
160
+ "name": "RNNotiflyReactNativeSdkSpec",
161
161
  "type": "modules",
162
162
  "jsSrcsDir": "src"
163
163
  }
@@ -1,16 +1,13 @@
1
- import type { TurboModule } from 'react-native';
2
- import { TurboModuleRegistry } from 'react-native';
1
+ import { type TurboModule, TurboModuleRegistry } from 'react-native';
3
2
  import { type UserProperties, type EventProperties } from './types';
4
3
 
5
4
  export interface Spec extends TurboModule {
6
- multiply(a: number, b: number): Promise<number>;
7
5
  initialize(
8
6
  projectId: string,
9
7
  username: string,
10
- password: string,
11
- useCustomClickHandler: boolean | undefined
8
+ password: string
12
9
  ): Promise<void>;
13
- setUserId(userId: string | undefined): Promise<void>;
10
+ setUserId(userId: string | null | undefined): Promise<void>;
14
11
  setUserProperties(userProperties: UserProperties): Promise<void>;
15
12
  trackEvent(
16
13
  eventName: string,
@@ -18,10 +15,8 @@ export interface Spec extends TurboModule {
18
15
  segmentationEventParamKeys: string[] | undefined | null
19
16
  ): Promise<void>;
20
17
  setLogLevel(logLevel: number): Promise<void>;
21
- notiflyBackgroundHandler(_remoteMessage: any): Promise<void>;
22
- setNotificationOpenedHandler(): Promise<void>;
23
18
  disableInAppMessage(): Promise<void>;
24
- registerFCMToken(token: string): Promise<void>;
19
+ addNotificationClickListener(): Promise<void>;
25
20
  }
26
21
 
27
- export default TurboModuleRegistry.getEnforcing<Spec>('NotiflySdk');
22
+ export default TurboModuleRegistry.getEnforcing<Spec>('NotiflyReactNativeSdk');
@@ -0,0 +1,3 @@
1
+ export enum EventNames {
2
+ NOTIFICATION_CLICKED = 'Notifly#NotificationClicked',
3
+ }
@@ -0,0 +1,67 @@
1
+ import { NativeEventEmitter, type NativeModule } from 'react-native';
2
+ import { EventNames } from '../constants';
3
+
4
+ type EventListener = (event: any) => void;
5
+
6
+ export default class EventReceiver {
7
+ private nativeNotiflySdk: NativeModule;
8
+ private notiflyEventEmitter: NativeEventEmitter;
9
+ private eventListenerArrayMap: Map<string, Array<EventListener>> = new Map();
10
+
11
+ constructor(nativeNotiflySdk: NativeModule) {
12
+ this.nativeNotiflySdk = nativeNotiflySdk;
13
+ this.notiflyEventEmitter = new NativeEventEmitter(this.nativeNotiflySdk);
14
+ }
15
+
16
+ addEventListener<T>(eventName: string, handler: (event: T) => void) {
17
+ const existings = this.eventListenerArrayMap.get(eventName);
18
+ if (existings && existings.length > 0) {
19
+ existings.push(handler);
20
+ } else {
21
+ this.eventListenerArrayMap.set(eventName, [handler]);
22
+ this.notiflyEventEmitter.addListener(eventName, (event) => {
23
+ const listeners = this.eventListenerArrayMap.get(eventName);
24
+ if (listeners) {
25
+ listeners.forEach((listener) =>
26
+ listener(this.transformEventAccordingToType(eventName, event))
27
+ );
28
+ }
29
+ });
30
+ }
31
+ }
32
+
33
+ removeEventListener<T>(eventName: string, handler: (event: T) => void) {
34
+ const existings = this.eventListenerArrayMap.get(eventName);
35
+ if (existings) {
36
+ const index = existings.indexOf(handler);
37
+ if (index !== -1) {
38
+ existings.splice(index, 1);
39
+ }
40
+ }
41
+ }
42
+
43
+ private transformEventAccordingToType(eventName: string, payload: any) {
44
+ if (eventName === EventNames.NOTIFICATION_CLICKED) {
45
+ // Transform rawPayload as Object as it is stringified in native code
46
+ const raw = payload?.notification?.rawPayload;
47
+ try {
48
+ return raw && typeof raw === 'string'
49
+ ? {
50
+ ...payload,
51
+ notification: {
52
+ ...payload.notification,
53
+ rawPayload: JSON.parse(raw),
54
+ },
55
+ }
56
+ : payload;
57
+ } catch (e) {
58
+ console.error(
59
+ '[Notifly React Native SDK] Error while parsing rawPayload. Payload will be returned as is.'
60
+ );
61
+ return payload;
62
+ }
63
+ }
64
+
65
+ return payload;
66
+ }
67
+ }