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.
- package/README.md +6 -6
- package/RNNetmera.podspec +1 -1
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.kt +6 -2
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.kt +42 -30
- package/android/src/main/java/com/netmera/reactnativesdk/{RNNetmeraPushBroadcastReceiver.kt → RNNetmeraPushActionCallbacks.kt} +1 -1
- package/ios/RNNetmera.h +3 -0
- package/ios/RNNetmera.mm +1 -5
- package/ios/RNNetmera.swift +202 -158
- package/ios/RNNetmeraPushLifecycleDelegate.swift +26 -12
- package/ios/{RNNetmeraUtils.swift → RNNetmeraPushObject.swift} +32 -122
- package/ios/RNNetmeraRCTEventEmitter.swift +15 -12
- package/lib/module/Netmera.js +2 -8
- package/lib/module/Netmera.js.map +1 -1
- package/lib/typescript/src/Netmera.d.ts +0 -1
- package/lib/typescript/src/Netmera.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Netmera.ts +2 -9
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.kt +0 -54
- package/ios/RNNetmeraCategoryObject.swift +0 -61
package/ios/RNNetmera.swift
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
306
|
-
|
|
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
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
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(
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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
|
-
|
|
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 =
|
|
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(_
|
|
562
|
+
public func fetchCategory(_ filterDict: [String: Any],
|
|
481
563
|
resolver: @escaping RCTPromiseResolveBlock,
|
|
482
564
|
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
483
|
-
let
|
|
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
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
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
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
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
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
|
|
687
|
-
|
|
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:
|
|
695
|
-
|
|
696
|
-
@objc(
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
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 =
|
|
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
|
-
|
|
25
|
-
guard
|
|
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
|
|
31
|
-
|
|
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
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
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
|
}
|