react-native-netmera 2.0.0-alpha02 → 2.0.0-alpha04

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.
@@ -61,6 +61,8 @@ public class RNNetmera: NSObject {
61
61
  var netmeraInbox: NetmeraInboxManager?
62
62
  var categoryManager: NetmeraInboxCategoryManager?
63
63
 
64
+ // MARK: Initialize methods
65
+
64
66
  /// Tracks whether `Netmera.initialize()` and shared setup have completed at least once.
65
67
  private static var isInitialized = false
66
68
 
@@ -99,6 +101,8 @@ public class RNNetmera: NSObject {
99
101
  ])
100
102
  }
101
103
 
104
+ // MARK: Notification methods
105
+
102
106
  @objc(requestPushNotificationAuthorization:withRejecter:)
103
107
  public func requestPushNotificationAuthorization(
104
108
  resolve: @escaping RCTPromiseResolveBlock,
@@ -117,14 +121,6 @@ public class RNNetmera: NSObject {
117
121
  }
118
122
  }
119
123
 
120
- @objc(currentExternalId:withRejecter:)
121
- func currentExternalId(
122
- resolve: RCTPromiseResolveBlock,
123
- reject: RCTPromiseRejectBlock
124
- ) {
125
- resolve(Netmera.getCurrentExternalId())
126
- }
127
-
128
124
  @objc(checkNotificationPermission:withRejecter:)
129
125
  func checkNotificationPermission(
130
126
  resolve: @escaping RCTPromiseResolveBlock,
@@ -146,6 +142,28 @@ public class RNNetmera: NSObject {
146
142
  }
147
143
  }
148
144
 
145
+ @objc(isPushEnabled:withRejecter:)
146
+ func isPushEnabled(
147
+ resolve: @escaping RCTPromiseResolveBlock,
148
+ reject: @escaping RCTPromiseRejectBlock
149
+ ) {
150
+ Netmera.isReceivingPushNotificationsEnabled { isEnabled in
151
+ resolve(isEnabled)
152
+ }
153
+ }
154
+
155
+ @objc(enablePush)
156
+ func enablePush() {
157
+ Netmera.setReceivingPushNotificationsEnabled(true)
158
+ }
159
+
160
+ @objc(disablePush)
161
+ func disablePush() {
162
+ Netmera.setReceivingPushNotificationsEnabled(false)
163
+ }
164
+
165
+ // MARK: Location methods
166
+
149
167
  @objc(requestPermissionsForLocation)
150
168
  func requestPermissionsForLocation() {
151
169
  Netmera.requestLocationAuthorization()
@@ -156,6 +174,8 @@ public class RNNetmera: NSObject {
156
174
  Netmera.setNetmeraMaxActiveRegions(count: maxActiveRegions)
157
175
  }
158
176
 
177
+ // MARK: Popup presentation methods
178
+
159
179
  @objc(enablePopupPresentation)
160
180
  func enablePopupPresentation() {
161
181
  Netmera.setPopupPresentationEnabled(true)
@@ -171,25 +191,7 @@ public class RNNetmera: NSObject {
171
191
  Netmera.dismissAllPresentations()
172
192
  }
173
193
 
174
- @objc(isPushEnabled:withRejecter:)
175
- func isPushEnabled(
176
- resolve: @escaping RCTPromiseResolveBlock,
177
- reject: @escaping RCTPromiseRejectBlock
178
- ) {
179
- Netmera.isReceivingPushNotificationsEnabled { isEnabled in
180
- resolve(isEnabled)
181
- }
182
- }
183
-
184
- @objc(enablePush)
185
- func enablePush() {
186
- Netmera.setReceivingPushNotificationsEnabled(true)
187
- }
188
-
189
- @objc(disablePush)
190
- func disablePush() {
191
- Netmera.setReceivingPushNotificationsEnabled(false)
192
- }
194
+ // MARK: Data management methods
193
195
 
194
196
  @objc(startDataTransfer)
195
197
  func startDataTransfer() {
@@ -235,6 +237,8 @@ public class RNNetmera: NSObject {
235
237
  Netmera.send(eventWithKey: code, attributes: filtered)
236
238
  }
237
239
 
240
+ // MARK: User methods
241
+
238
242
  @objc(identifyUser:hasCallback:withResolver:withRejecter:)
239
243
  func identifyUser(_ userDictionary: [String: Any],
240
244
  hasCallback: Bool,
@@ -295,6 +299,14 @@ public class RNNetmera: NSObject {
295
299
  InternalNetmera.updateUserProfile(withDictionary: userProfileDictionary, completion: completionBlock)
296
300
  }
297
301
 
302
+ @objc(currentExternalId:withRejecter:)
303
+ func currentExternalId(
304
+ resolve: RCTPromiseResolveBlock,
305
+ reject: RCTPromiseRejectBlock
306
+ ) {
307
+ resolve(Netmera.getCurrentExternalId())
308
+ }
309
+
298
310
  @objc(fetchCoupons:max:withResolver:withRejecter:)
299
311
  func fetchCoupons(_ page: Int, max: Int, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
300
312
  let filter = NetmeraCouponFilter(page: page, max: max)
@@ -302,8 +314,20 @@ public class RNNetmera: NSObject {
302
314
  Netmera.fetchCoupons(using: filter) { result in
303
315
  switch result {
304
316
  case .success(let coupons):
305
- let array = RNNetmeraUtils.shared.parseCouponObjects(coupons)
306
- resolve(array)
317
+ resolve(coupons.map { coupon in
318
+ var data: [String: Any] = [
319
+ "couponId": coupon.couponId,
320
+ "name": coupon.name,
321
+ "code": coupon.code
322
+ ]
323
+ if let assignDate = coupon.assignDate {
324
+ data["assignDate"] = String(format: "%f", assignDate.timeIntervalSince1970)
325
+ }
326
+ if let expireDate = coupon.expireDate {
327
+ data["expireDate"] = String(format: "%f", expireDate.timeIntervalSince1970)
328
+ }
329
+ return data
330
+ })
307
331
  case .failure(let error):
308
332
  reject(ERROR_CODE_COUPON_FETCH, ERROR_MESSAGE_COUPON_FETCH, error)
309
333
  }
@@ -316,10 +340,13 @@ public class RNNetmera: NSObject {
316
340
  Netmera.getUserCategoryPreferenceList { result in
317
341
  switch result {
318
342
  case .success(let categories):
319
- let parsed = RNNetmeraUtils.shared.parseUserCategoryPreferenceListToMap(
320
- categories
321
- )
322
- resolve(parsed)
343
+ resolve(categories.map { preference in
344
+ var data: [String: Any] = [:]
345
+ if let id = preference.categoryId { data["categoryId"] = id }
346
+ if let name = preference.categoryName { data["categoryName"] = name }
347
+ if let enabled = preference.categoryEnabled { data["optInStatus"] = enabled }
348
+ return data
349
+ })
323
350
  case .failure(_):
324
351
  reject(ERROR_CODE_GET_CATEGORY_PREFERENCE,
325
352
  ERROR_MESSAGE_GET_CATEGORY_PREFERENCE,
@@ -346,15 +373,70 @@ public class RNNetmera: NSObject {
346
373
  }
347
374
  }
348
375
 
349
- @objc(getInitialURL:withRejecter:)
350
- func getInitialURL(resolve: RCTPromiseResolveBlock,
351
- reject: RCTPromiseRejectBlock) {
352
- if let url = RNNetmeraRCTEventEmitter.getInitialUrl() {
353
- resolve(url.absoluteString)
354
- } else {
376
+ @objc(setEmailPermission:withResolver:withRejecter:)
377
+ func setEmailPermission(isAllowed: Bool,
378
+ resolve: RCTPromiseResolveBlock,
379
+ reject: RCTPromiseRejectBlock) {
380
+ Netmera.setEmailPermission(isAllowed: isAllowed)
355
381
  resolve(nil)
356
382
  }
357
- }
383
+
384
+ @objc(getEmailPermission:withRejecter:)
385
+ func getEmailPermission(resolve: @escaping RCTPromiseResolveBlock,
386
+ reject: @escaping RCTPromiseRejectBlock) {
387
+ Netmera.getEmailPermission { result in
388
+ switch result {
389
+ case .success(let isAllowed):
390
+ resolve(isAllowed)
391
+ case .failure(let error):
392
+ reject(ERROR_CODE_EMAIL_PERMISSION, ERROR_MESSAGE_EMAIL_PERMISSION, error)
393
+ }
394
+ }
395
+ }
396
+
397
+ @objc(setSmsPermission:withResolver:withRejecter:)
398
+ func setSmsPermission(isAllowed: Bool,
399
+ resolve: RCTPromiseResolveBlock,
400
+ reject: RCTPromiseRejectBlock) {
401
+ Netmera.setSmsPermission(isAllowed: isAllowed)
402
+ resolve(nil)
403
+ }
404
+
405
+ @objc(getSmsPermission:withRejecter:)
406
+ func getSmsPermission(resolve: @escaping RCTPromiseResolveBlock,
407
+ reject: @escaping RCTPromiseRejectBlock) {
408
+ Netmera.getSmsPermission { result in
409
+ switch result {
410
+ case .success(let isAllowed):
411
+ resolve(isAllowed)
412
+ case .failure(let error):
413
+ reject(ERROR_CODE_SMS_PERMISSION, ERROR_MESSAGE_SMS_PERMISSION, error)
414
+ }
415
+ }
416
+ }
417
+
418
+ @objc(setWhatsAppPermission:withResolver:withRejecter:)
419
+ func setWhatsAppPermission(isAllowed: Bool,
420
+ resolve: RCTPromiseResolveBlock,
421
+ reject: RCTPromiseRejectBlock) {
422
+ Netmera.setWhatsAppPermission(isAllowed: isAllowed)
423
+ resolve(nil)
424
+ }
425
+
426
+ @objc(getWhatsAppPermission:withRejecter:)
427
+ func getWhatsAppPermission(resolve: @escaping RCTPromiseResolveBlock,
428
+ reject: @escaping RCTPromiseRejectBlock) {
429
+ Netmera.getWhatsAppPermission { result in
430
+ switch result {
431
+ case .success(let isAllowed):
432
+ resolve(isAllowed)
433
+ case .failure(let error):
434
+ reject(ERROR_CODE_WHATSAPP_PERMISSION, ERROR_MESSAGE_WHATSAPP_PERMISSION, error)
435
+ }
436
+ }
437
+ }
438
+
439
+ // MARK: Push inbox methods
358
440
 
359
441
  @objc(fetchInbox:withResolver:withRejecter:)
360
442
  public func fetchInbox(_ inboxDictionary: [String: Any],
@@ -386,7 +468,7 @@ public class RNNetmera: NSObject {
386
468
  switch result {
387
469
  case .success:
388
470
  let array: [[String: Any]] = manager.objects.map {
389
- RNNetmeraUtils.shared.dictionaryFromInboxPush($0)
471
+ RNNetmeraPushObject.getPushObjectMap($0)
390
472
  }
391
473
  resolver(array)
392
474
  self.netmeraInbox = manager
@@ -412,7 +494,7 @@ public class RNNetmera: NSObject {
412
494
  inbox.nextPage { status in
413
495
  switch status {
414
496
  case .success:
415
- let array = RNNetmeraUtils.shared.mapPushObjects(inbox.objects)
497
+ let array = RNNetmeraPushObject.mapPushObjects(inbox.objects)
416
498
  resolver(array)
417
499
  case .failure(let error):
418
500
  rejecter(ERROR_CODE_NOT_NEXT_PAGE, ERROR_MESSAGE_NOT_NEXT_PAGE, error)
@@ -477,10 +559,22 @@ public class RNNetmera: NSObject {
477
559
 
478
560
 
479
561
  @objc(fetchCategory:withResolver:withRejecter:)
480
- public func fetchCategory(_ inboxDictionary: [String: Any],
562
+ public func fetchCategory(_ filterDict: [String: Any],
481
563
  resolver: @escaping RCTPromiseResolveBlock,
482
564
  rejecter: @escaping RCTPromiseRejectBlock) {
483
- let filter = RNNetmeraCategoryObject.getCategoryFilter(inboxDictionary)
565
+ let categoryInboxStatus: NetmeraInboxStatus
566
+ if let statusRaw = filterDict["status"] as? Int {
567
+ categoryInboxStatus = NetmeraInboxStatus(rawValue: statusRaw)
568
+ } else {
569
+ categoryInboxStatus = .default
570
+ }
571
+ let categoryPageSize = filterDict["pageSize"] as? Int ?? 10
572
+ let categoryIncludeExpired = filterDict["includeExpiredObjects"] as? Bool ?? false
573
+ let filter = NetmeraInboxCategoryFilter(
574
+ status: categoryInboxStatus,
575
+ pageSize: categoryPageSize,
576
+ shouldIncludeExpiredObjects: categoryIncludeExpired
577
+ )
484
578
 
485
579
  guard let manager = Netmera.inboxCategoryManager(with: filter) else {
486
580
  rejecter(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY, nil)
@@ -492,10 +586,21 @@ public class RNNetmera: NSObject {
492
586
  case .success(let isSuccess):
493
587
  if isSuccess {
494
588
  self.categoryManager = manager
495
- let mappedCategories = RNNetmeraCategoryObject.mapCategoryObjects(
496
- manager.categories
497
- )
498
- resolver(mappedCategories)
589
+ resolver(manager.categories.map { categoryObject in
590
+ var data: [String: Any] = [:]
591
+ data["categoryName"] = categoryObject.categoryName
592
+ data["readCount"] = categoryObject.statusCounts[.read] ?? 0
593
+ data["unreadCount"] = categoryObject.statusCounts[.unread] ?? 0
594
+ data["deletedCount"] = categoryObject.statusCounts[.deleted] ?? 0
595
+ if let lastMessage = categoryObject.lastMessage {
596
+ let lastMsg = RNNetmeraPushObject.getPushObjectMap(lastMessage)
597
+ if let jsonData = try? JSONSerialization.data(withJSONObject: lastMsg, options: []),
598
+ let jsonStr = String(data: jsonData, encoding: .utf8) {
599
+ data["lastMessage"] = jsonStr
600
+ }
601
+ }
602
+ return data
603
+ })
499
604
  } else {
500
605
  rejecter(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY, nil)
501
606
  }
@@ -521,10 +626,21 @@ public class RNNetmera: NSObject {
521
626
  switch status {
522
627
  case .success(let isSuccess):
523
628
  if isSuccess {
524
- let mappedCategories = RNNetmeraCategoryObject.mapCategoryObjects(
525
- category.categories
526
- )
527
- resolve(mappedCategories)
629
+ resolve(category.categories.map { categoryObject in
630
+ var data: [String: Any] = [:]
631
+ data["categoryName"] = categoryObject.categoryName
632
+ data["readCount"] = categoryObject.statusCounts[.read] ?? 0
633
+ data["unreadCount"] = categoryObject.statusCounts[.unread] ?? 0
634
+ data["deletedCount"] = categoryObject.statusCounts[.deleted] ?? 0
635
+ if let lastMessage = categoryObject.lastMessage {
636
+ let lastMsg = RNNetmeraPushObject.getPushObjectMap(lastMessage)
637
+ if let jsonData = try? JSONSerialization.data(withJSONObject: lastMsg, options: []),
638
+ let jsonStr = String(data: jsonData, encoding: .utf8) {
639
+ data["lastMessage"] = jsonStr
640
+ }
641
+ }
642
+ return data
643
+ })
528
644
  } else {
529
645
  reject(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY, nil)
530
646
  }
@@ -546,11 +662,11 @@ public class RNNetmera: NSObject {
546
662
  return
547
663
  }
548
664
 
549
- if let pushInboxObject = inbox.objects.first(
550
- where: { $0.payload?.pushId == pushId
551
- }),
552
- let pushObject = pushInboxObject.push {
553
- Netmera.handlePushObject(pushObject)
665
+ if let pushInboxObject = inbox.objects.first(where: { $0.payload?.pushId == pushId }),
666
+ let payload = pushInboxObject.payload,
667
+ let action = payload.action {
668
+ Netmera.handleAction(action, for: payload)
669
+
554
670
  }
555
671
 
556
672
  resolver(nil)
@@ -568,14 +684,14 @@ public class RNNetmera: NSObject {
568
684
 
569
685
  for pushInboxObject in inbox.objects {
570
686
  guard
571
- let pushObject = pushInboxObject.push,
687
+ let pushObject = pushInboxObject.payload,
572
688
  let actions = pushObject.interactiveAction
573
689
  else {
574
690
  continue
575
691
  }
576
692
  if let interactiveAction = actions.first(where: { $0.id == interactiveActionId }),
577
693
  let action = interactiveAction.action {
578
- Netmera.handleInteractiveAction(action, for: pushObject)
694
+ Netmera.handleAction(action, for: pushObject)
579
695
  return
580
696
  }
581
697
  }
@@ -583,38 +699,6 @@ public class RNNetmera: NSObject {
583
699
  resolver(false)
584
700
  }
585
701
 
586
- @objc(handleLastMessage:withResolver:withRejecter:)
587
- public func handleLastMessage(_ pushId: String,
588
- resolver: @escaping RCTPromiseResolveBlock,
589
- rejecter: @escaping RCTPromiseRejectBlock) {
590
-
591
- guard let inbox = netmeraInbox else {
592
- rejecter(ERROR_CODE_INBOX_NULL, ERROR_MESSAGE_INBOX_NULL, nil)
593
- return
594
- }
595
-
596
- guard !pushId.isEmpty else {
597
- rejecter(
598
- ERROR_CODE_INVALID_PUSH_OBJECT,
599
- ERROR_MESSAGE_INVALID_PUSH_OBJECT,
600
- nil
601
- )
602
- return
603
- }
604
-
605
- if let matched = inbox.objects.last(where: { $0.push?.pushId == pushId }),
606
- let pushObject = matched.push {
607
- Netmera.handlePushObject(pushObject)
608
- resolver(true)
609
- } else {
610
- rejecter(
611
- ERROR_CODE_INVALID_PUSH_OBJECT,
612
- ERROR_MESSAGE_INVALID_PUSH_OBJECT,
613
- nil
614
- )
615
- }
616
- }
617
-
618
702
  @objc(updateStatusByCategories:status:withResolver:withRejecter:)
619
703
  public func updateStatusByCategories(_ categoryList: [String],
620
704
  status: Int,
@@ -670,7 +754,20 @@ public class RNNetmera: NSObject {
670
754
  return
671
755
  }
672
756
 
673
- let status = RNNetmeraUtils.shared.getInboxStatus(code: statusValue)
757
+ let status: NetmeraInboxStatus
758
+ switch statusValue {
759
+ case NetmeraInboxStatus.deleted.rawValue:
760
+ status = .deleted
761
+ case NetmeraInboxStatus.read.rawValue:
762
+ status = .read
763
+ case NetmeraInboxStatus.unread.rawValue:
764
+ status = .unread
765
+ case NetmeraInboxStatus.all.rawValue:
766
+ fallthrough
767
+ default:
768
+ status = .all
769
+ }
770
+
674
771
  let shouldIncludeExpiredObjects = filterDictionary["includeExpiredObjects"] as? Bool ?? false
675
772
  let categories = filterDictionary["categoryList"] as? [String] ?? []
676
773
 
@@ -683,77 +780,24 @@ public class RNNetmera: NSObject {
683
780
  Netmera.fetchInboxCount(with: filter) { resultStatus in
684
781
  switch resultStatus {
685
782
  case .success(let response):
686
- let responseMap = RNNetmeraUtils.shared.parseInboxCount(for: response)
687
- resolver(responseMap)
783
+ resolver([
784
+ "7": response.count(for: .all),
785
+ "1": response.count(for: .read),
786
+ "2": response.count(for: .unread),
787
+ "4": response.count(for: .deleted)
788
+ ])
688
789
  case .failure(let error):
689
790
  rejecter(ERROR_CODE_INBOX_STATUS, ERROR_MESSAGE_INBOX_STATUS, error)
690
791
  }
691
792
  }
692
793
  }
693
794
 
694
- // MARK: - Permission Methods
695
-
696
- @objc(setEmailPermission:withResolver:withRejecter:)
697
- func setEmailPermission(isAllowed: Bool,
698
- resolve: RCTPromiseResolveBlock,
699
- reject: RCTPromiseRejectBlock) {
700
- Netmera.setEmailPermission(isAllowed: isAllowed)
701
- resolve(nil)
702
- }
703
-
704
- @objc(getEmailPermission:withRejecter:)
705
- func getEmailPermission(resolve: @escaping RCTPromiseResolveBlock,
706
- reject: @escaping RCTPromiseRejectBlock) {
707
- Netmera.getEmailPermission { result in
708
- switch result {
709
- case .success(let isAllowed):
710
- resolve(isAllowed)
711
- case .failure(let error):
712
- reject(ERROR_CODE_EMAIL_PERMISSION, ERROR_MESSAGE_EMAIL_PERMISSION, error)
713
- }
714
- }
715
- }
716
-
717
- @objc(setSmsPermission:withResolver:withRejecter:)
718
- func setSmsPermission(isAllowed: Bool,
719
- resolve: RCTPromiseResolveBlock,
720
- reject: RCTPromiseRejectBlock) {
721
- Netmera.setSmsPermission(isAllowed: isAllowed)
722
- resolve(nil)
723
- }
724
-
725
- @objc(getSmsPermission:withRejecter:)
726
- func getSmsPermission(resolve: @escaping RCTPromiseResolveBlock,
727
- reject: @escaping RCTPromiseRejectBlock) {
728
- Netmera.getSmsPermission { result in
729
- switch result {
730
- case .success(let isAllowed):
731
- resolve(isAllowed)
732
- case .failure(let error):
733
- reject(ERROR_CODE_SMS_PERMISSION, ERROR_MESSAGE_SMS_PERMISSION, error)
734
- }
735
- }
736
- }
737
-
738
- @objc(setWhatsAppPermission:withResolver:withRejecter:)
739
- func setWhatsAppPermission(isAllowed: Bool,
740
- resolve: RCTPromiseResolveBlock,
741
- reject: RCTPromiseRejectBlock) {
742
- Netmera.setWhatsAppPermission(isAllowed: isAllowed)
743
- resolve(nil)
744
- }
745
-
746
- @objc(getWhatsAppPermission:withRejecter:)
747
- func getWhatsAppPermission(resolve: @escaping RCTPromiseResolveBlock,
748
- reject: @escaping RCTPromiseRejectBlock) {
749
- Netmera.getWhatsAppPermission { result in
750
- switch result {
751
- case .success(let isAllowed):
752
- resolve(isAllowed)
753
- case .failure(let error):
754
- reject(ERROR_CODE_WHATSAPP_PERMISSION, ERROR_MESSAGE_WHATSAPP_PERMISSION, error)
755
- }
756
- }
757
- }
795
+ // MARK: Other methods
796
+
797
+ @objc(getInitialURL:withRejecter:)
798
+ func getInitialURL(resolve: RCTPromiseResolveBlock,
799
+ reject: RCTPromiseRejectBlock) {
800
+ resolve(RNNetmeraRCTEventEmitter.getInitialUrl())
801
+ }
758
802
 
759
803
  }
@@ -10,25 +10,37 @@ final class RNNetmeraPushLifecycleDelegate: NSObject, NetmeraPushLifecycleDelega
10
10
 
11
11
  static let shared = RNNetmeraPushLifecycleDelegate()
12
12
 
13
+ private func triggerDeeplinkIfPresent(in action: NetmeraPushAction?) {
14
+ guard
15
+ let action,
16
+ action.actionType == .openDeeplink,
17
+ let deeplink = action as? NetmeraDeeplinkAction,
18
+ let url = deeplink.deeplinkURL
19
+ else { return }
20
+ RNNetmeraRCTEventEmitter.onDeeplinkTriggered(url)
21
+ }
22
+
13
23
  func didRegisterDeviceToken(_ deviceToken: String) {
14
24
  RNNetmeraRCTEventEmitter.onPushRegister(["pushToken": deviceToken])
15
25
  }
16
26
 
17
27
  func didReceive(_ push: NetmeraBasePush) {
18
- let payload = RNNetmeraUtils.shared.getBasePushObjectMap(push)
19
- guard !payload.isEmpty else { return }
28
+ guard let payload = RNNetmeraPushObject.getBasePushObjectMap(push) else { return }
20
29
  RNNetmeraRCTEventEmitter.onPushReceive(["payload": payload])
21
30
  }
22
31
 
23
32
  func didOpen(_ push: NetmeraBasePush) {
24
- let payload = RNNetmeraUtils.shared.getBasePushObjectMap(push)
25
- guard !payload.isEmpty else { return }
33
+ triggerDeeplinkIfPresent(in: push.action)
34
+ guard let payload = RNNetmeraPushObject.getBasePushObjectMap(push) else { return }
26
35
  RNNetmeraRCTEventEmitter.onPushOpen(["payload": payload])
27
36
  }
28
37
 
29
38
  func didClickActionButton(_ identifier: String, for push: NetmeraBasePush) {
30
- let payload = RNNetmeraUtils.shared.getBasePushObjectMap(push)
31
- guard !payload.isEmpty else { return }
39
+ if let interactive = push as? NetmeraInteractivePush,
40
+ let item = interactive.interactiveAction?.first(where: { $0.id == identifier }) {
41
+ triggerDeeplinkIfPresent(in: item.action)
42
+ }
43
+ guard let payload = RNNetmeraPushObject.getBasePushObjectMap(push) else { return }
32
44
  RNNetmeraRCTEventEmitter.onPushButtonClicked([
33
45
  "payload": payload,
34
46
  "identifier": identifier,
@@ -36,12 +48,14 @@ final class RNNetmeraPushLifecycleDelegate: NSObject, NetmeraPushLifecycleDelega
36
48
  }
37
49
 
38
50
  func didClickCarouselItem(_ identifier: String?, for push: NetmeraBasePush) {
39
- let payload = RNNetmeraUtils.shared.getBasePushObjectMap(push)
40
- guard !payload.isEmpty else { return }
41
- var body: [String: Any] = ["payload": payload]
42
- if let identifier {
43
- body["identifier"] = identifier
51
+ if let content = push as? NetmeraContentPush,
52
+ let item = content.carousel?.first(where: { $0.id == identifier }) {
53
+ triggerDeeplinkIfPresent(in: item.action)
44
54
  }
45
- RNNetmeraRCTEventEmitter.onCarouselItemClicked(body)
55
+ guard let payload = RNNetmeraPushObject.getBasePushObjectMap(push) else { return }
56
+ RNNetmeraRCTEventEmitter.onCarouselItemClicked([
57
+ "payload": payload,
58
+ "identifier": identifier as Any
59
+ ])
46
60
  }
47
61
  }