react-native-netmera 2.0.0-beta01 → 2.0.0-beta03

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 (47) hide show
  1. package/README.md +2 -2
  2. package/RNNetmera.podspec +1 -1
  3. package/android/build.gradle +1 -1
  4. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushActionCallbacks.kt +13 -17
  5. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.kt +39 -8
  6. package/ios/RNNetmera.swift +54 -55
  7. package/ios/RNNetmeraPushLifecycleDelegate.swift +14 -18
  8. package/ios/RNNetmeraPushObject.swift +77 -88
  9. package/lib/module/Netmera.js +37 -16
  10. package/lib/module/Netmera.js.map +1 -1
  11. package/lib/module/index.js +5 -2
  12. package/lib/module/index.js.map +1 -1
  13. package/lib/module/models/NetmeraCarouselObject.js +18 -0
  14. package/lib/module/models/NetmeraCarouselObject.js.map +1 -0
  15. package/lib/module/models/NetmeraInteractiveAction.js +18 -0
  16. package/lib/module/models/NetmeraInteractiveAction.js.map +1 -0
  17. package/lib/module/models/NetmeraPushAction.js +27 -0
  18. package/lib/module/models/NetmeraPushAction.js.map +1 -0
  19. package/lib/module/models/NetmeraPushObject.js +58 -0
  20. package/lib/module/models/NetmeraPushObject.js.map +1 -0
  21. package/lib/typescript/src/Netmera.d.ts +8 -4
  22. package/lib/typescript/src/Netmera.d.ts.map +1 -1
  23. package/lib/typescript/src/index.d.ts +5 -2
  24. package/lib/typescript/src/index.d.ts.map +1 -1
  25. package/lib/typescript/src/models/NetmeraCarouselObject.d.ts +8 -0
  26. package/lib/typescript/src/models/NetmeraCarouselObject.d.ts.map +1 -0
  27. package/lib/typescript/src/models/NetmeraCategory.d.ts +2 -2
  28. package/lib/typescript/src/models/NetmeraCategory.d.ts.map +1 -1
  29. package/lib/typescript/src/models/NetmeraInteractiveAction.d.ts +9 -0
  30. package/lib/typescript/src/models/NetmeraInteractiveAction.d.ts.map +1 -0
  31. package/lib/typescript/src/models/NetmeraPushAction.d.ts +17 -0
  32. package/lib/typescript/src/models/NetmeraPushAction.d.ts.map +1 -0
  33. package/lib/typescript/src/models/NetmeraPushObject.d.ts +40 -0
  34. package/lib/typescript/src/models/NetmeraPushObject.d.ts.map +1 -0
  35. package/package.json +1 -1
  36. package/src/Netmera.ts +57 -36
  37. package/src/index.ts +10 -2
  38. package/src/models/NetmeraCarouselObject.ts +23 -0
  39. package/src/models/NetmeraCategory.ts +2 -2
  40. package/src/models/NetmeraInteractiveAction.ts +21 -0
  41. package/src/models/NetmeraPushAction.ts +28 -0
  42. package/src/models/NetmeraPushObject.ts +90 -0
  43. package/lib/module/models/NetmeraInbox.js +0 -8
  44. package/lib/module/models/NetmeraInbox.js.map +0 -1
  45. package/lib/typescript/src/models/NetmeraInbox.d.ts +0 -22
  46. package/lib/typescript/src/models/NetmeraInbox.d.ts.map +0 -1
  47. package/src/models/NetmeraInbox.ts +0 -25
package/src/Netmera.ts CHANGED
@@ -6,7 +6,9 @@ import { AppRegistry, DeviceEventEmitter } from 'react-native';
6
6
  import NetmeraEvent from './events/NetmeraEvent';
7
7
  import NetmeraUser from './models/NetmeraUser';
8
8
  import NetmeraInboxFilter from './models/NetmeraInboxFilter';
9
- import NetmeraPushInbox from './models/NetmeraInbox';
9
+ import NetmeraPushObject from './models/NetmeraPushObject';
10
+ import NetmeraInteractiveAction from './models/NetmeraInteractiveAction';
11
+ import NetmeraCarouselObject from './models/NetmeraCarouselObject';
10
12
  import NetmeraCategoryFilter from './models/NetmeraCategoryFilter';
11
13
  import NetmeraCategory from './models/NetmeraCategory';
12
14
  import NMInboxStatusCountFilter from './models/NMInboxStatusCountFilter';
@@ -19,67 +21,83 @@ import { netmeraRCTEventEmitter, RNNetmera } from './utils/RNNetmera';
19
21
  import type { NetmeraUserProfile } from './models/NetmeraUserProfile';
20
22
 
21
23
  export default class Netmera {
22
- static initBroadcastReceiver = (
23
- onPushRegister?: (message: string) => Promise<void>,
24
- onPushReceive?: (message: string) => Promise<void>,
25
- onPushOpen?: (message: string) => Promise<void>,
26
- onPushDismiss?: (message: string) => Promise<void>,
27
- onPushButtonClicked?: (message: string) => Promise<void>,
28
- onCarouselObjectSelected?: (message: string) => Promise<void>
24
+ static setPushLifecycleCallbacks = (
25
+ onPushRegister?: (data: { pushToken: string }) => Promise<void>,
26
+ onPushReceive?: (push: NetmeraPushObject) => Promise<void>,
27
+ onPushOpen?: (push: NetmeraPushObject) => Promise<void>,
28
+ onPushDismiss?: (push: NetmeraPushObject) => Promise<void>,
29
+ onPushButtonClicked?: (
30
+ push: NetmeraPushObject,
31
+ action?: NetmeraInteractiveAction
32
+ ) => Promise<void>,
33
+ onCarouselObjectSelected?: (
34
+ push: NetmeraPushObject,
35
+ carouselItem?: NetmeraCarouselObject
36
+ ) => Promise<void>
29
37
  ) => {
30
38
  if (onPushRegister) {
39
+ const wrapped = (raw: any) =>
40
+ onPushRegister({ pushToken: raw?.pushToken });
31
41
  if (isAndroid()) {
32
- AppRegistry.registerHeadlessTask(
33
- 'onPushRegister',
34
- () => onPushRegister
35
- );
42
+ AppRegistry.registerHeadlessTask('onPushRegister', () => wrapped);
36
43
  } else {
37
- netmeraRCTEventEmitter.addListener('onPushRegister', onPushRegister);
44
+ netmeraRCTEventEmitter.addListener('onPushRegister', wrapped);
38
45
  }
39
46
  }
40
47
  if (onPushReceive) {
48
+ const wrapped = (raw: any) =>
49
+ onPushReceive(NetmeraPushObject.fromJson(raw));
41
50
  if (isAndroid()) {
42
- AppRegistry.registerHeadlessTask('onPushReceive', () => onPushReceive);
51
+ AppRegistry.registerHeadlessTask('onPushReceive', () => wrapped);
43
52
  } else {
44
- netmeraRCTEventEmitter.addListener('onPushReceive', onPushReceive);
53
+ netmeraRCTEventEmitter.addListener('onPushReceive', wrapped);
45
54
  }
46
55
  }
47
56
  if (onPushOpen) {
57
+ const wrapped = (raw: any) =>
58
+ onPushOpen(NetmeraPushObject.fromJson(raw));
48
59
  if (isAndroid()) {
49
- AppRegistry.registerHeadlessTask('onPushOpen', () => onPushOpen);
60
+ AppRegistry.registerHeadlessTask('onPushOpen', () => wrapped);
50
61
  } else {
51
- netmeraRCTEventEmitter.addListener('onPushOpen', onPushOpen);
62
+ netmeraRCTEventEmitter.addListener('onPushOpen', wrapped);
52
63
  }
53
64
  }
54
65
  if (onPushDismiss) {
66
+ const wrapped = (raw: any) =>
67
+ onPushDismiss(NetmeraPushObject.fromJson(raw));
55
68
  if (isAndroid()) {
56
- AppRegistry.registerHeadlessTask('onPushDismiss', () => onPushDismiss);
69
+ AppRegistry.registerHeadlessTask('onPushDismiss', () => wrapped);
57
70
  }
58
71
  }
59
72
  if (onPushButtonClicked) {
73
+ const wrapped = (raw: any) => {
74
+ const push = NetmeraPushObject.fromJson(raw);
75
+ const action = raw?.clickedAction
76
+ ? NetmeraInteractiveAction.fromJson(raw.clickedAction)
77
+ : undefined;
78
+ return onPushButtonClicked(push, action);
79
+ };
60
80
  if (isAndroid()) {
61
- AppRegistry.registerHeadlessTask(
62
- 'onPushButtonClicked',
63
- () => onPushButtonClicked
64
- );
81
+ AppRegistry.registerHeadlessTask('onPushButtonClicked', () => wrapped);
65
82
  } else {
66
- netmeraRCTEventEmitter.addListener(
67
- 'onPushButtonClicked',
68
- onPushButtonClicked
69
- );
83
+ netmeraRCTEventEmitter.addListener('onPushButtonClicked', wrapped);
70
84
  }
71
85
  }
72
86
  if (onCarouselObjectSelected) {
87
+ const wrapped = (raw: any) => {
88
+ const push = NetmeraPushObject.fromJson(raw);
89
+ const carouselItem = raw?.carouselItem
90
+ ? NetmeraCarouselObject.fromJson(raw.carouselItem)
91
+ : undefined;
92
+ return onCarouselObjectSelected(push, carouselItem);
93
+ };
73
94
  if (isAndroid()) {
74
95
  AppRegistry.registerHeadlessTask(
75
96
  'onCarouselObjectSelected',
76
- () => onCarouselObjectSelected
97
+ () => wrapped
77
98
  );
78
99
  } else {
79
- netmeraRCTEventEmitter.addListener(
80
- 'onCarouselItemClicked',
81
- onCarouselObjectSelected
82
- );
100
+ netmeraRCTEventEmitter.addListener('onCarouselItemClicked', wrapped);
83
101
  }
84
102
  }
85
103
  };
@@ -176,14 +194,17 @@ export default class Netmera {
176
194
  return RNNetmera.fetchCoupons(page, max);
177
195
  };
178
196
 
179
- static fetchInbox = (
197
+ static fetchInbox = async (
180
198
  netmeraInboxFilter: NetmeraInboxFilter
181
- ): Promise<Array<NetmeraPushInbox>> => {
182
- return RNNetmera.fetchInbox(netmeraInboxFilter);
199
+ ): Promise<Array<NetmeraPushObject>> => {
200
+ const items: Record<string, any>[] =
201
+ await RNNetmera.fetchInbox(netmeraInboxFilter);
202
+ return items.map(NetmeraPushObject.fromJson);
183
203
  };
184
204
 
185
- static fetchNextPage = (): Promise<Array<NetmeraPushInbox>> => {
186
- return RNNetmera.fetchNextPage();
205
+ static fetchNextPage = async (): Promise<Array<NetmeraPushObject>> => {
206
+ const items: Record<string, any>[] = await RNNetmera.fetchNextPage();
207
+ return items.map(NetmeraPushObject.fromJson);
187
208
  };
188
209
 
189
210
  static countForStatus = (status: number = NMInboxStatus.STATUS_UNREAD) => {
package/src/index.ts CHANGED
@@ -11,7 +11,10 @@ import {
11
11
  } from './models/NetmeraProfileAttribute';
12
12
  import NetmeraCategory from './models/NetmeraCategory';
13
13
  import NetmeraCategoryFilter from './models/NetmeraCategoryFilter';
14
- import NetmeraPushInbox from './models/NetmeraInbox';
14
+ import NetmeraPushObject, { NetmeraPushType } from './models/NetmeraPushObject';
15
+ import NetmeraPushAction, { NetmeraPushActionType } from './models/NetmeraPushAction';
16
+ import NetmeraCarouselObject from './models/NetmeraCarouselObject';
17
+ import NetmeraInteractiveAction from './models/NetmeraInteractiveAction';
15
18
  import NetmeraInboxFilter from './models/NetmeraInboxFilter';
16
19
  import NMInboxStatusCountFilter from './models/NMInboxStatusCountFilter';
17
20
  import NMCategoryPreference from './models/NMCategoryPreference';
@@ -45,7 +48,12 @@ export {
45
48
  Netmera,
46
49
  NetmeraCouponObject,
47
50
  NetmeraUser,
48
- NetmeraPushInbox,
51
+ NetmeraPushObject,
52
+ NetmeraPushType,
53
+ NetmeraPushAction,
54
+ NetmeraPushActionType,
55
+ NetmeraCarouselObject,
56
+ NetmeraInteractiveAction,
49
57
  NetmeraInboxFilter,
50
58
  NMInboxStatus,
51
59
  NMInboxStatusCountFilter,
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright (c) 2026 Netmera Research.
3
+ */
4
+
5
+ import NetmeraPushAction from './NetmeraPushAction';
6
+
7
+ export default class NetmeraCarouselObject {
8
+ id?: string;
9
+ picturePath?: string;
10
+ action?: NetmeraPushAction;
11
+
12
+ static fromJson(json: Record<string, any>): NetmeraCarouselObject {
13
+ const obj = new NetmeraCarouselObject();
14
+ obj.id = json['id'];
15
+ obj.picturePath = json['picturePath'];
16
+ const rawAction =
17
+ typeof json['action'] === 'string'
18
+ ? JSON.parse(json['action'])
19
+ : json['action'];
20
+ if (rawAction) obj.action = NetmeraPushAction.fromJson(rawAction);
21
+ return obj;
22
+ }
23
+ }
@@ -2,12 +2,12 @@
2
2
  * Copyright (c) 2026 Netmera Research.
3
3
  */
4
4
 
5
- import NetmeraPushInbox from './NetmeraInbox';
5
+ import NetmeraPushObject from './NetmeraPushObject';
6
6
 
7
7
  export default class NetmeraCategory {
8
8
  categoryName?: string;
9
9
  categoryStatus?: string;
10
- lastMessage?: NetmeraPushInbox;
10
+ lastMessage?: NetmeraPushObject;
11
11
  readCount?: number;
12
12
  deletedCount?: number;
13
13
  unreadCount?: number;
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Copyright (c) 2026 Netmera Research.
3
+ */
4
+
5
+ import NetmeraPushAction from './NetmeraPushAction';
6
+
7
+ export default class NetmeraInteractiveAction {
8
+ id?: string;
9
+ actionTitle?: string;
10
+ action?: NetmeraPushAction;
11
+ customJson?: Record<string, any>;
12
+
13
+ static fromJson(json: Record<string, any>): NetmeraInteractiveAction {
14
+ const item = new NetmeraInteractiveAction();
15
+ item.id = json['id'];
16
+ item.actionTitle = json['title'];
17
+ item.action = json['act'] ? NetmeraPushAction.fromJson(json['act']) : undefined;
18
+ item.customJson = json['prms'];
19
+ return item;
20
+ }
21
+ }
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright (c) 2026 Netmera Research.
3
+ */
4
+
5
+ export enum NetmeraPushActionType {
6
+ openApp = 0,
7
+ openDeeplink = 1,
8
+ showWebView = 2,
9
+ nothing = 3,
10
+ sendEvent = 4,
11
+ share = 5,
12
+ review = 6,
13
+ showWidget = 7,
14
+ }
15
+
16
+ export default class NetmeraPushAction {
17
+ actionType?: NetmeraPushActionType;
18
+ url?: string;
19
+ close?: boolean;
20
+
21
+ static fromJson(json: Record<string, any>): NetmeraPushAction {
22
+ const obj = new NetmeraPushAction();
23
+ obj.actionType = json['at'];
24
+ obj.url = json['url'];
25
+ obj.close = json['close'];
26
+ return obj;
27
+ }
28
+ }
@@ -0,0 +1,90 @@
1
+ /*
2
+ * Copyright (c) 2026 Netmera Research.
3
+ */
4
+
5
+ import NetmeraPushAction from './NetmeraPushAction';
6
+ import NetmeraInteractiveAction from './NetmeraInteractiveAction';
7
+ import NetmeraCarouselObject from './NetmeraCarouselObject';
8
+
9
+ export enum NetmeraPushType {
10
+ undefined = 0,
11
+ standard = 1,
12
+ interactive = 2,
13
+ popup = 3,
14
+ silent = 6,
15
+ ping = 7,
16
+ configUpdate = 8,
17
+ inAppMessage = 10,
18
+ recall = 11,
19
+ review = 12,
20
+ forceUpdate = 13,
21
+ widget = 14,
22
+ }
23
+
24
+ export default class NetmeraPushObject {
25
+ pushId?: string;
26
+ pushInstanceId?: string;
27
+ pushType?: NetmeraPushType;
28
+ category?: string;
29
+ categories?: number[];
30
+ customJson?: Record<string, any>;
31
+ pushAction?: NetmeraPushAction;
32
+ interactiveActions?: NetmeraInteractiveAction[];
33
+ carousel?: NetmeraCarouselObject[];
34
+ title?: string;
35
+ subtitle?: string;
36
+ body?: string;
37
+ mediaAttachmentURL?: string;
38
+ externalId?: string;
39
+ sendDate?: string;
40
+ expireTime?: string;
41
+ deepLink?: string;
42
+ webPage?: string;
43
+ inboxStatus?: number;
44
+
45
+ static fromJson(json: Record<string, any>): NetmeraPushObject {
46
+ const obj = new NetmeraPushObject();
47
+ obj.pushId = json['pushId'];
48
+ obj.pushInstanceId = json['pushInstanceId'];
49
+ obj.pushType = json['pushType'];
50
+ obj.category = json['category'];
51
+ obj.categories = json['categories'];
52
+ obj.customJson = json['customJson'];
53
+ obj.title = json['title'];
54
+ obj.subtitle = json['subtitle'];
55
+ obj.body = json['body'];
56
+ obj.mediaAttachmentURL = json['mediaAttachmentURL'];
57
+ obj.externalId = json['externalId'];
58
+ obj.sendDate = json['sendDate'];
59
+ obj.expireTime = json['expireTime'];
60
+ obj.deepLink = json['deepLink'];
61
+ obj.webPage = json['webPage'];
62
+ obj.inboxStatus = json['inboxStatus'];
63
+
64
+ if (json['pushAction']) {
65
+ obj.pushAction = NetmeraPushAction.fromJson(json['pushAction']);
66
+ }
67
+
68
+ if (json['interactiveActions'] != null) {
69
+ const raw =
70
+ typeof json['interactiveActions'] === 'string'
71
+ ? JSON.parse(json['interactiveActions'])
72
+ : json['interactiveActions'];
73
+ obj.interactiveActions = Array.isArray(raw)
74
+ ? raw.map(NetmeraInteractiveAction.fromJson)
75
+ : [];
76
+ }
77
+
78
+ if (json['carousel'] != null) {
79
+ const raw =
80
+ typeof json['carousel'] === 'string'
81
+ ? JSON.parse(json['carousel'])
82
+ : json['carousel'];
83
+ obj.carousel = Array.isArray(raw)
84
+ ? raw.map(NetmeraCarouselObject.fromJson)
85
+ : [];
86
+ }
87
+
88
+ return obj;
89
+ }
90
+ }
@@ -1,8 +0,0 @@
1
- "use strict";
2
-
3
- /*
4
- * Copyright (c) 2026 Netmera Research.
5
- */
6
-
7
- export default class NetmeraPushInbox {}
8
- //# sourceMappingURL=NetmeraInbox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["NetmeraPushInbox"],"sourceRoot":"../../../src","sources":["models/NetmeraInbox.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,eAAe,MAAMA,gBAAgB,CAAC","ignoreList":[]}
@@ -1,22 +0,0 @@
1
- export default class NetmeraPushInbox {
2
- title?: string;
3
- subtitle?: string;
4
- body?: string;
5
- pushType?: number;
6
- pushId?: string;
7
- pushInstanceId?: string;
8
- sendDate?: string;
9
- inboxStatus?: number;
10
- deepLink?: string;
11
- webPage?: string;
12
- externalId?: string;
13
- customJson?: Map<any, any>;
14
- pushAction?: Map<any, any>;
15
- carousel?: any[];
16
- mediaAttachmentURL?: string;
17
- category?: string;
18
- categories?: any[];
19
- interactiveActions?: any[];
20
- expireTime?: string;
21
- }
22
- //# sourceMappingURL=NetmeraInbox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NetmeraInbox.d.ts","sourceRoot":"","sources":["../../../../src/models/NetmeraInbox.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -1,25 +0,0 @@
1
- /*
2
- * Copyright (c) 2026 Netmera Research.
3
- */
4
-
5
- export default class NetmeraPushInbox {
6
- title?: string;
7
- subtitle?: string;
8
- body?: string;
9
- pushType?: number;
10
- pushId?: string;
11
- pushInstanceId?: string;
12
- sendDate?: string;
13
- inboxStatus?: number;
14
- deepLink?: string;
15
- webPage?: string;
16
- externalId?: string;
17
- customJson?: Map<any, any>;
18
- pushAction?: Map<any, any>;
19
- carousel?: any[];
20
- mediaAttachmentURL?: string;
21
- category?: string;
22
- categories?: any[];
23
- interactiveActions?: any[];
24
- expireTime?: string;
25
- }