react-native-netmera 1.11.3 → 2.0.0-alpha02
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 +109 -120
- package/RNNetmera.podspec +31 -14
- package/android/build.gradle +83 -19
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +0 -5
- package/android/src/main/AndroidManifestNew.xml +5 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.kt +24 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.kt +54 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.kt +108 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.kt +24 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.kt +694 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.kt +17 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.kt +81 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.kt +32 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.kt +218 -0
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.kt +25 -0
- package/ios/AnyCodable/AnyCodable.swift +151 -0
- package/ios/AnyCodable/AnyDecodable.swift +192 -0
- package/ios/AnyCodable/AnyEncodable.swift +295 -0
- package/ios/RNNetmera-Bridging-Header.h +3 -0
- package/ios/RNNetmera.h +9 -29
- package/ios/RNNetmera.mm +143 -0
- package/ios/RNNetmera.swift +759 -0
- package/ios/RNNetmeraCategoryObject.swift +61 -0
- package/ios/RNNetmeraEvent.swift +26 -0
- package/ios/RNNetmeraPushLifecycleDelegate.swift +47 -0
- package/ios/RNNetmeraRCTEventEmitter.mm +8 -0
- package/ios/RNNetmeraRCTEventEmitter.swift +134 -0
- package/ios/RNNetmeraUtils.swift +233 -0
- package/lib/module/Netmera.js +256 -0
- package/lib/module/Netmera.js.map +1 -0
- package/lib/module/events/NetmeraEvent.js +8 -0
- package/lib/module/events/NetmeraEvent.js.map +1 -0
- package/lib/module/events/NetmeraEventBannerOpen.js +13 -0
- package/lib/module/events/NetmeraEventBannerOpen.js.map +1 -0
- package/lib/module/events/NetmeraEventBatteryLevel.js +10 -0
- package/lib/module/events/NetmeraEventBatteryLevel.js.map +1 -0
- package/lib/module/events/NetmeraEventCategoryView.js +13 -0
- package/lib/module/events/NetmeraEventCategoryView.js.map +1 -0
- package/lib/module/events/NetmeraEventInAppPurchase.js +28 -0
- package/lib/module/events/NetmeraEventInAppPurchase.js.map +1 -0
- package/lib/module/events/NetmeraEventLogin.js +10 -0
- package/lib/module/events/NetmeraEventLogin.js.map +1 -0
- package/lib/module/events/NetmeraEventRegister.js +10 -0
- package/lib/module/events/NetmeraEventRegister.js.map +1 -0
- package/lib/module/events/NetmeraEventScreenView.js +22 -0
- package/lib/module/events/NetmeraEventScreenView.js.map +1 -0
- package/lib/module/events/NetmeraEventSearch.js +13 -0
- package/lib/module/events/NetmeraEventSearch.js.map +1 -0
- package/lib/module/events/NetmeraEventShare.js +13 -0
- package/lib/module/events/NetmeraEventShare.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventCartAddProduct.js +13 -0
- package/lib/module/events/commerce/NetmeraEventCartAddProduct.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js +10 -0
- package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventCartView.js +13 -0
- package/lib/module/events/commerce/NetmeraEventCartView.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventOrderCancel.js +19 -0
- package/lib/module/events/commerce/NetmeraEventOrderCancel.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventProductComment.js +7 -0
- package/lib/module/events/commerce/NetmeraEventProductComment.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventProductRate.js +10 -0
- package/lib/module/events/commerce/NetmeraEventProductRate.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventProductView.js +7 -0
- package/lib/module/events/commerce/NetmeraEventProductView.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventPurchase.js +34 -0
- package/lib/module/events/commerce/NetmeraEventPurchase.js.map +1 -0
- package/lib/module/events/commerce/NetmeraEventWishList.js +7 -0
- package/lib/module/events/commerce/NetmeraEventWishList.js.map +1 -0
- package/lib/module/events/commerce/NetmeraLineItem.js +9 -0
- package/lib/module/events/commerce/NetmeraLineItem.js.map +1 -0
- package/lib/module/events/commerce/NetmeraProduct.js +46 -0
- package/lib/module/events/commerce/NetmeraProduct.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContent.js +42 -0
- package/lib/module/events/media/NetmeraEventContent.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContentComment.js +7 -0
- package/lib/module/events/media/NetmeraEventContentComment.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContentRate.js +10 -0
- package/lib/module/events/media/NetmeraEventContentRate.js.map +1 -0
- package/lib/module/events/media/NetmeraEventContentView.js +7 -0
- package/lib/module/events/media/NetmeraEventContentView.js.map +1 -0
- package/lib/module/index.js +43 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/models/NMCategoryPreference.js +8 -0
- package/lib/module/models/NMCategoryPreference.js.map +1 -0
- package/lib/module/models/NMInboxStatus.js +11 -0
- package/lib/module/models/NMInboxStatus.js.map +1 -0
- package/lib/module/models/NMInboxStatusCountFilter.js +12 -0
- package/lib/module/models/NMInboxStatusCountFilter.js.map +1 -0
- package/lib/module/models/NetmeraCategory.js +8 -0
- package/lib/module/models/NetmeraCategory.js.map +1 -0
- package/lib/module/models/NetmeraCategoryFilter.js +8 -0
- package/lib/module/models/NetmeraCategoryFilter.js.map +1 -0
- package/lib/module/models/NetmeraCouponObject.js +8 -0
- package/lib/module/models/NetmeraCouponObject.js.map +1 -0
- package/lib/module/models/NetmeraInbox.js +8 -0
- package/lib/module/models/NetmeraInbox.js.map +1 -0
- package/lib/module/models/NetmeraInboxFilter.js +8 -0
- package/lib/module/models/NetmeraInboxFilter.js.map +1 -0
- package/lib/module/models/NetmeraProfileAttribute.js +75 -0
- package/lib/module/models/NetmeraProfileAttribute.js.map +1 -0
- package/lib/module/models/NetmeraUser.js +89 -0
- package/lib/module/models/NetmeraUser.js.map +1 -0
- package/lib/module/models/NetmeraUserProfile.js +58 -0
- package/lib/module/models/NetmeraUserProfile.js.map +1 -0
- package/lib/module/models/NotificationPermissionStatus.js +10 -0
- package/lib/module/models/NotificationPermissionStatus.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/utils/DeviceUtils.js +10 -0
- package/lib/module/utils/DeviceUtils.js.map +1 -0
- package/lib/module/utils/Optional.js +32 -0
- package/lib/module/utils/Optional.js.map +1 -0
- package/lib/module/utils/RNNetmera.js +16 -0
- package/lib/module/utils/RNNetmera.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/Netmera.d.ts +70 -0
- package/lib/typescript/src/Netmera.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEvent.d.ts +5 -0
- package/lib/typescript/src/events/NetmeraEvent.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts +7 -0
- package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts +19 -0
- package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventLogin.d.ts +7 -0
- package/lib/typescript/src/events/NetmeraEventLogin.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventRegister.d.ts +7 -0
- package/lib/typescript/src/events/NetmeraEventRegister.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventScreenView.d.ts +15 -0
- package/lib/typescript/src/events/NetmeraEventScreenView.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventSearch.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventSearch.d.ts.map +1 -0
- package/lib/typescript/src/events/NetmeraEventShare.d.ts +9 -0
- package/lib/typescript/src/events/NetmeraEventShare.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts +9 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts +7 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts +9 -0
- package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts +13 -0
- package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts +5 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts +7 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts +5 -0
- package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts +24 -0
- package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts +5 -0
- package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts +6 -0
- package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts.map +1 -0
- package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts +23 -0
- package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContent.d.ts +23 -0
- package/lib/typescript/src/events/media/NetmeraEventContent.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts +5 -0
- package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts +7 -0
- package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts.map +1 -0
- package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts +5 -0
- package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +39 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/models/NMCategoryPreference.d.ts +6 -0
- package/lib/typescript/src/models/NMCategoryPreference.d.ts.map +1 -0
- package/lib/typescript/src/models/NMInboxStatus.d.ts +8 -0
- package/lib/typescript/src/models/NMInboxStatus.d.ts.map +1 -0
- package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts +7 -0
- package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraCategory.d.ts +10 -0
- package/lib/typescript/src/models/NetmeraCategory.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts +6 -0
- package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraCouponObject.d.ts +8 -0
- package/lib/typescript/src/models/NetmeraCouponObject.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraInbox.d.ts +22 -0
- package/lib/typescript/src/models/NetmeraInbox.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraInboxFilter.d.ts +7 -0
- package/lib/typescript/src/models/NetmeraInboxFilter.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts +33 -0
- package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraUser.d.ts +25 -0
- package/lib/typescript/src/models/NetmeraUser.d.ts.map +1 -0
- package/lib/typescript/src/models/NetmeraUserProfile.d.ts +21 -0
- package/lib/typescript/src/models/NetmeraUserProfile.d.ts.map +1 -0
- package/lib/typescript/src/models/NotificationPermissionStatus.d.ts +7 -0
- package/lib/typescript/src/models/NotificationPermissionStatus.d.ts.map +1 -0
- package/lib/typescript/src/utils/DeviceUtils.d.ts +3 -0
- package/lib/typescript/src/utils/DeviceUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/Optional.d.ts +15 -0
- package/lib/typescript/src/utils/Optional.d.ts.map +1 -0
- package/lib/typescript/src/utils/RNNetmera.d.ts +5 -0
- package/lib/typescript/src/utils/RNNetmera.d.ts.map +1 -0
- package/package.json +104 -17
- package/src/Netmera.ts +139 -88
- package/src/events/NetmeraEvent.ts +1 -1
- package/src/events/NetmeraEventBannerOpen.ts +4 -4
- package/src/events/NetmeraEventBatteryLevel.ts +3 -3
- package/src/events/NetmeraEventCategoryView.ts +4 -4
- package/src/events/NetmeraEventInAppPurchase.ts +10 -10
- package/src/events/NetmeraEventLogin.ts +3 -3
- package/src/events/NetmeraEventRegister.ts +3 -3
- package/src/events/NetmeraEventScreenView.ts +7 -7
- package/src/events/NetmeraEventSearch.ts +4 -4
- package/src/events/NetmeraEventShare.ts +4 -4
- package/src/events/commerce/NetmeraEventCartAddProduct.ts +4 -4
- package/src/events/commerce/NetmeraEventCartRemoveProduct.ts +3 -3
- package/src/events/commerce/NetmeraEventCartView.ts +4 -4
- package/src/events/commerce/NetmeraEventOrderCancel.ts +6 -6
- package/src/events/commerce/NetmeraEventProductComment.ts +2 -2
- package/src/events/commerce/NetmeraEventProductRate.ts +3 -3
- package/src/events/commerce/NetmeraEventProductView.ts +2 -2
- package/src/events/commerce/NetmeraEventPurchase.ts +13 -13
- package/src/events/commerce/NetmeraEventWishList.ts +2 -2
- package/src/events/commerce/NetmeraLineItem.ts +2 -2
- package/src/events/commerce/NetmeraProduct.ts +10 -10
- package/src/events/media/NetmeraEventContent.ts +8 -8
- package/src/events/media/NetmeraEventContentComment.ts +2 -2
- package/src/events/media/NetmeraEventContentRate.ts +3 -3
- package/src/events/media/NetmeraEventContentView.ts +2 -2
- package/src/index.ts +87 -0
- package/src/models/NMCategoryPreference.ts +1 -1
- package/src/models/NMInboxStatusCountFilter.ts +1 -1
- package/src/models/NetmeraCategory.ts +2 -2
- package/src/models/NetmeraCategoryFilter.ts +1 -1
- package/src/models/NetmeraCouponObject.ts +1 -1
- package/src/models/NetmeraInbox.ts +1 -1
- package/src/models/NetmeraInboxFilter.ts +1 -1
- package/src/models/NetmeraProfileAttribute.ts +81 -0
- package/src/models/NetmeraUser.ts +76 -74
- package/src/models/NetmeraUserProfile.ts +67 -0
- package/src/models/NotificationPermissionStatus.ts +4 -4
- package/src/utils/DeviceUtils.ts +3 -3
- package/src/utils/Optional.ts +31 -0
- package/src/utils/RNNetmera.ts +24 -0
- package/.eslintignore +0 -7
- package/.gitattributes +0 -1
- package/.github/workflows/code_quality_check.yaml +0 -38
- package/.prettierignore +0 -14
- package/.yarnrc.yml +0 -1
- package/android/.project +0 -17
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
- package/android/gradlew +0 -172
- package/android/gradlew.bat +0 -84
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.java +0 -24
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.java +0 -56
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.java +0 -154
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.java +0 -36
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.java +0 -631
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.java +0 -35
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.java +0 -86
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.java +0 -32
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUser.java +0 -24
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.java +0 -354
- package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.java +0 -27
- package/index.ts +0 -80
- package/ios/RNNetmera.m +0 -507
- package/ios/RNNetmera.xcodeproj/project.pbxproj +0 -316
- package/ios/RNNetmera.xcodeproj/xcshareddata/xcschemes/RNNetmera.xcscheme +0 -67
- package/ios/RNNetmera.xcworkspace/contents.xcworkspacedata +0 -9
- package/ios/RNNetmeraCategoryObject.h +0 -16
- package/ios/RNNetmeraCategoryObject.m +0 -59
- package/ios/RNNetmeraEvent.h +0 -17
- package/ios/RNNetmeraEvent.m +0 -27
- package/ios/RNNetmeraRCTEventEmitter.h +0 -23
- package/ios/RNNetmeraRCTEventEmitter.m +0 -142
- package/ios/RNNetmeraUser.h +0 -15
- package/ios/RNNetmeraUser.m +0 -19
- package/ios/RNNetmeraUtils.h +0 -27
- package/ios/RNNetmeraUtils.m +0 -128
- package/scripts/update-version.js +0 -38
- package/scripts/yarn_rebuild.sh +0 -31
- package/tsconfig.json +0 -3
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNNetmeraCategoryObject.swift
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import NetmeraCore
|
|
6
|
+
import NetmeraNotification
|
|
7
|
+
import NetmeraNotificationInbox
|
|
8
|
+
|
|
9
|
+
@objc(RNNetmeraCategoryObject)
|
|
10
|
+
public class RNNetmeraCategoryObject: NSObject {
|
|
11
|
+
|
|
12
|
+
// MARK: - Map category objects to array of dictionaries
|
|
13
|
+
static func mapCategoryObjects(_ categoryObjects: [NetmeraInboxCategoryObject]) -> [[String: Any]] {
|
|
14
|
+
var categoryObjectList: [[String: Any]] = []
|
|
15
|
+
for categoryObject in categoryObjects {
|
|
16
|
+
categoryObjectList.append(getCategoryObjectMap(categoryObject))
|
|
17
|
+
}
|
|
18
|
+
return categoryObjectList
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// MARK: - Convert single category object to dictionary
|
|
22
|
+
static func getCategoryObjectMap(_ categoryObject: NetmeraInboxCategoryObject) -> [String: Any] {
|
|
23
|
+
var data: [String: Any] = [:]
|
|
24
|
+
|
|
25
|
+
data["categoryName"] = categoryObject.categoryName
|
|
26
|
+
data["readCount"] = categoryObject.statusCounts[.read] ?? 0
|
|
27
|
+
data["unreadCount"] = categoryObject.statusCounts[.unread] ?? 0
|
|
28
|
+
data["deletedCount"] = categoryObject.statusCounts[.deleted] ?? 0
|
|
29
|
+
|
|
30
|
+
if let lastMessage = categoryObject.lastMessage {
|
|
31
|
+
let lastMsg = RNNetmeraUtils.shared.dictionaryFromInboxPush(lastMessage)
|
|
32
|
+
if let jsonData = try? JSONSerialization.data(withJSONObject: lastMsg, options: []),
|
|
33
|
+
let jsonStr = String(data: jsonData, encoding: .utf8) {
|
|
34
|
+
data["lastMessage"] = jsonStr
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return data
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static func getCategoryFilter(_ inboxDictionary: [String: Any]) -> NetmeraInboxCategoryFilter {
|
|
42
|
+
let status: NetmeraInboxStatus
|
|
43
|
+
if let statusRaw = inboxDictionary["status"] as? Int {
|
|
44
|
+
status = NetmeraInboxStatus(rawValue: statusRaw)
|
|
45
|
+
} else {
|
|
46
|
+
status = .default
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
let pageSize = inboxDictionary["pageSize"] as? Int ?? 10
|
|
50
|
+
|
|
51
|
+
let shouldIncludeExpiredObjects = inboxDictionary["includeExpiredObjects"] as? Bool ?? false
|
|
52
|
+
|
|
53
|
+
let filter = NetmeraInboxCategoryFilter(
|
|
54
|
+
status: status,
|
|
55
|
+
pageSize: pageSize,
|
|
56
|
+
shouldIncludeExpiredObjects: shouldIncludeExpiredObjects
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
return filter
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import NetmeraCore
|
|
3
|
+
|
|
4
|
+
public class RNNetmeraEvent: NetmeraEvent {
|
|
5
|
+
var eventParameters: [String: AnyCodable]?
|
|
6
|
+
|
|
7
|
+
override public init?(eventKey: String) {
|
|
8
|
+
super.init(eventKey: eventKey)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
required init(from decoder: Decoder) throws {
|
|
12
|
+
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
13
|
+
self.eventParameters = try container.decodeIfPresent([String: AnyCodable].self, forKey: .eventParameters)
|
|
14
|
+
try super.init(from: decoder)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public override func encode(to encoder: Encoder) throws {
|
|
18
|
+
try super.encode(to: encoder)
|
|
19
|
+
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
20
|
+
try container.encodeIfPresent(eventParameters, forKey: .eventParameters)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
enum CodingKeys: String, CodingKey {
|
|
24
|
+
case eventParameters = "prms"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNNetmeraPushLifecycleDelegate.swift
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import Foundation
|
|
6
|
+
import NetmeraNotification
|
|
7
|
+
import NetmeraNotificationCore
|
|
8
|
+
|
|
9
|
+
final class RNNetmeraPushLifecycleDelegate: NSObject, NetmeraPushLifecycleDelegate {
|
|
10
|
+
|
|
11
|
+
static let shared = RNNetmeraPushLifecycleDelegate()
|
|
12
|
+
|
|
13
|
+
func didRegisterDeviceToken(_ deviceToken: String) {
|
|
14
|
+
RNNetmeraRCTEventEmitter.onPushRegister(["pushToken": deviceToken])
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func didReceive(_ push: NetmeraBasePush) {
|
|
18
|
+
let payload = RNNetmeraUtils.shared.getBasePushObjectMap(push)
|
|
19
|
+
guard !payload.isEmpty else { return }
|
|
20
|
+
RNNetmeraRCTEventEmitter.onPushReceive(["payload": payload])
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
func didOpen(_ push: NetmeraBasePush) {
|
|
24
|
+
let payload = RNNetmeraUtils.shared.getBasePushObjectMap(push)
|
|
25
|
+
guard !payload.isEmpty else { return }
|
|
26
|
+
RNNetmeraRCTEventEmitter.onPushOpen(["payload": payload])
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
func didClickActionButton(_ identifier: String, for push: NetmeraBasePush) {
|
|
30
|
+
let payload = RNNetmeraUtils.shared.getBasePushObjectMap(push)
|
|
31
|
+
guard !payload.isEmpty else { return }
|
|
32
|
+
RNNetmeraRCTEventEmitter.onPushButtonClicked([
|
|
33
|
+
"payload": payload,
|
|
34
|
+
"identifier": identifier,
|
|
35
|
+
])
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
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
|
|
44
|
+
}
|
|
45
|
+
RNNetmeraRCTEventEmitter.onCarouselItemClicked(body)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import React
|
|
3
|
+
import NetmeraCore
|
|
4
|
+
import NetmeraNotificationCore
|
|
5
|
+
|
|
6
|
+
@objc(RNNetmeraRCTEventEmitter)
|
|
7
|
+
public class RNNetmeraRCTEventEmitter: RCTEventEmitter {
|
|
8
|
+
|
|
9
|
+
private static weak var emitterInstance: RNNetmeraRCTEventEmitter?
|
|
10
|
+
private static var isReactBridgeInitialized = false
|
|
11
|
+
private static var waitingDeeplink: URL?
|
|
12
|
+
private static var waitingOnPushRegister: [String: Any]?
|
|
13
|
+
private static var waitingOnPushReceive: [String: Any]?
|
|
14
|
+
private static var waitingOnPushOpen: [String: Any]?
|
|
15
|
+
private static var waitingOnPushDismiss: [String: Any]?
|
|
16
|
+
private static var waitingOnPushButtonClicked: [String: Any]?
|
|
17
|
+
private static var waitingOnCarouselItemClicked: [String: Any]?
|
|
18
|
+
|
|
19
|
+
public override init() {
|
|
20
|
+
super.init()
|
|
21
|
+
RNNetmeraRCTEventEmitter.emitterInstance = self
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
deinit {
|
|
25
|
+
if RNNetmeraRCTEventEmitter.emitterInstance === self {
|
|
26
|
+
RNNetmeraRCTEventEmitter.emitterInstance = nil
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private static func deliver(_ eventName: String, body: [String: Any], waiting: inout [String: Any]?) {
|
|
31
|
+
if isReactBridgeInitialized, let emitter = emitterInstance {
|
|
32
|
+
emitter.sendEvent(withName: eventName, body: body)
|
|
33
|
+
} else {
|
|
34
|
+
waiting = body
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public override func startObserving() {
|
|
39
|
+
RNNetmeraRCTEventEmitter.isReactBridgeInitialized = true
|
|
40
|
+
|
|
41
|
+
if let body = RNNetmeraRCTEventEmitter.waitingOnPushRegister {
|
|
42
|
+
sendEvent(withName: "onPushRegister", body: body)
|
|
43
|
+
RNNetmeraRCTEventEmitter.waitingOnPushRegister = nil
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if let body = RNNetmeraRCTEventEmitter.waitingOnPushReceive {
|
|
47
|
+
sendEvent(withName: "onPushReceive", body: body)
|
|
48
|
+
RNNetmeraRCTEventEmitter.waitingOnPushReceive = nil
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if let body = RNNetmeraRCTEventEmitter.waitingOnPushOpen {
|
|
52
|
+
sendEvent(withName: "onPushOpen", body: body)
|
|
53
|
+
RNNetmeraRCTEventEmitter.waitingOnPushOpen = nil
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if let body = RNNetmeraRCTEventEmitter.waitingOnPushDismiss {
|
|
57
|
+
sendEvent(withName: "onPushDismiss", body: body)
|
|
58
|
+
RNNetmeraRCTEventEmitter.waitingOnPushDismiss = nil
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if let body = RNNetmeraRCTEventEmitter.waitingOnPushButtonClicked {
|
|
62
|
+
sendEvent(withName: "onPushButtonClicked", body: body)
|
|
63
|
+
RNNetmeraRCTEventEmitter.waitingOnPushButtonClicked = nil
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if let body = RNNetmeraRCTEventEmitter.waitingOnCarouselItemClicked {
|
|
67
|
+
sendEvent(withName: "onCarouselItemClicked", body: body)
|
|
68
|
+
RNNetmeraRCTEventEmitter.waitingOnCarouselItemClicked = nil
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public override func stopObserving() {
|
|
73
|
+
RNNetmeraRCTEventEmitter.isReactBridgeInitialized = false
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public override func supportedEvents() -> [String]! {
|
|
77
|
+
return [
|
|
78
|
+
"onWidgetUrlTriggered",
|
|
79
|
+
"onPushReceive",
|
|
80
|
+
"onPushOpen",
|
|
81
|
+
"onPushRegister",
|
|
82
|
+
"onPushButtonClicked",
|
|
83
|
+
"onCarouselItemClicked",
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@objc public static override func requiresMainQueueSetup() -> Bool {
|
|
88
|
+
return false
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// MARK: - Public Static API
|
|
92
|
+
|
|
93
|
+
@objc public static func getInitialUrl() -> URL? {
|
|
94
|
+
return waitingDeeplink
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public static func handleOpenURL(_ url: URL, forPushObject object: NetmeraBasePush) {
|
|
98
|
+
if object.pushType == NetmeraPushType.widget {
|
|
99
|
+
let urlDictionary = ["url": url.absoluteString]
|
|
100
|
+
NotificationCenter.default.post(
|
|
101
|
+
name: Notification.Name("onWidgetUrlTriggered"),
|
|
102
|
+
object: nil,
|
|
103
|
+
userInfo: urlDictionary
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
//TODO: implement
|
|
109
|
+
@objc public static func onDeeplinkTriggered(_ url: URL) {
|
|
110
|
+
if !isReactBridgeInitialized {
|
|
111
|
+
waitingDeeplink = url
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@objc public static func onPushRegister(_ body: [String: Any]) {
|
|
116
|
+
deliver("onPushRegister", body: body, waiting: &waitingOnPushRegister)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@objc public static func onPushReceive(_ body: [String: Any]) {
|
|
120
|
+
deliver("onPushReceive", body: body, waiting: &waitingOnPushReceive)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@objc public static func onPushOpen(_ body: [String: Any]) {
|
|
124
|
+
deliver("onPushOpen", body: body, waiting: &waitingOnPushOpen)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@objc public static func onPushButtonClicked(_ body: [String: Any]) {
|
|
128
|
+
deliver("onPushButtonClicked", body: body, waiting: &waitingOnPushButtonClicked)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@objc public static func onCarouselItemClicked(_ body: [String: Any]) {
|
|
132
|
+
deliver("onCarouselItemClicked", body: body, waiting: &waitingOnCarouselItemClicked)
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNNetmeraUtils.swift
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
import Foundation
|
|
7
|
+
import NetmeraCore
|
|
8
|
+
import NetmeraNotification
|
|
9
|
+
import NetmeraAnalytic
|
|
10
|
+
import NetmeraGeofence
|
|
11
|
+
import NetmeraLocation
|
|
12
|
+
import NetmeraAdvertisingId
|
|
13
|
+
import NetmeraNotificationInbox
|
|
14
|
+
import NetmeraAnalyticAutotracking
|
|
15
|
+
import NetmeraNotificationCore
|
|
16
|
+
|
|
17
|
+
class RNNetmeraUtils: NSObject {
|
|
18
|
+
|
|
19
|
+
static let shared = RNNetmeraUtils()
|
|
20
|
+
|
|
21
|
+
private override init() {
|
|
22
|
+
super.init()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
func getBasePushObjectMap(_ push: NetmeraBasePush) -> [String: Any] {
|
|
26
|
+
do {
|
|
27
|
+
let data = try JSONEncoder().encode(push)
|
|
28
|
+
guard let dict = try JSONSerialization.jsonObject(with: data) as? [String: Any] else {
|
|
29
|
+
return [:]
|
|
30
|
+
}
|
|
31
|
+
return dict
|
|
32
|
+
} catch {
|
|
33
|
+
return [:]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
func mapPushObjects(_ pushObjects: [NetmeraInboxPush]) -> [[String: Any]] {
|
|
38
|
+
return pushObjects.map { dictionaryFromInboxPush($0) }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
func dictionaryFromInboxPush(_ pushObject: NetmeraInboxPush) -> [String: Any] {
|
|
42
|
+
var data: [String: Any] = [:]
|
|
43
|
+
|
|
44
|
+
let push = pushObject.payload
|
|
45
|
+
data["pushType"] = push?.pushType.rawValue ?? 0
|
|
46
|
+
data["pushId"] = push?.pushId ?? ""
|
|
47
|
+
data["pushInstanceId"] = push?.pushInstanceId ?? ""
|
|
48
|
+
data["inboxStatus"] = pushObject.status?.rawValue
|
|
49
|
+
data["category"] = push?.category ?? ""
|
|
50
|
+
data["customJson"] = push?.params ?? [:]
|
|
51
|
+
data["mediaAttachmentURL"] = push?.mediaAttachmentURL ?? ""
|
|
52
|
+
data["externalId"] = push?.externalId ?? ""
|
|
53
|
+
|
|
54
|
+
if let carousel = push?.carousel {
|
|
55
|
+
data["carousel"] = carousel.map { item in
|
|
56
|
+
var itemMap: [String: Any?] = [:]
|
|
57
|
+
itemMap["id"] = item.id
|
|
58
|
+
itemMap["bpp"] = item.url?.absoluteString
|
|
59
|
+
itemMap["ctitle"] = item.title
|
|
60
|
+
itemMap["ctext"] = item.subtitle
|
|
61
|
+
|
|
62
|
+
if let action = item.action {
|
|
63
|
+
itemMap["action"] = mapAction(action)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return itemMap
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
if let categories = push?.categoryIds {
|
|
72
|
+
data["categories"] = categories
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
let alert = pushObject.alert
|
|
77
|
+
data["title"] = alert?.title ?? ""
|
|
78
|
+
data["subtitle"] = alert?.subtitle ?? ""
|
|
79
|
+
data["body"] = alert?.body ?? ""
|
|
80
|
+
|
|
81
|
+
if let expireDate = push?.expirationDate {
|
|
82
|
+
data["expireTime"] = formatDate(expireDate)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if let action = push?.action {
|
|
86
|
+
let mappedAction = mapAction(action)
|
|
87
|
+
data["pushAction"] = mappedAction
|
|
88
|
+
|
|
89
|
+
if (action.actionType == .openDeeplink) {
|
|
90
|
+
if let a = action as? NetmeraDeeplinkAction {
|
|
91
|
+
data["action_deeplink_url"] = a.deeplinkURL
|
|
92
|
+
}
|
|
93
|
+
} else if (action.actionType == .showWebView) {
|
|
94
|
+
if let a = action as? NetmeraWebViewAction {
|
|
95
|
+
data["action_webpage_url"] = a.url
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if let actions = push?.interactiveAction {
|
|
102
|
+
let mapped = actions.map { actionItem -> [String: Any] in
|
|
103
|
+
var dict: [String: Any] = [:]
|
|
104
|
+
dict["id"] = actionItem.id ?? ""
|
|
105
|
+
dict["text"] = actionItem.title ?? ""
|
|
106
|
+
if let act = actionItem.action {
|
|
107
|
+
dict["act"] = mapAction(act)
|
|
108
|
+
}
|
|
109
|
+
dict["prms"] = actionItem.params ?? [:]
|
|
110
|
+
return dict
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if let jsonData = try? JSONSerialization.data(withJSONObject: mapped, options: []) {
|
|
114
|
+
data["interactiveActions"] = String(data: jsonData, encoding: .utf8)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
if let sendDate = push?.sendDate {
|
|
120
|
+
data["sendDate"] = formatDate(sendDate)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return data
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
// MARK: - Inbox Status
|
|
128
|
+
func getInboxStatus(code: Int) -> NetmeraInboxStatus {
|
|
129
|
+
switch code {
|
|
130
|
+
case NetmeraInboxStatus.deleted.rawValue:
|
|
131
|
+
return .deleted
|
|
132
|
+
case NetmeraInboxStatus.read.rawValue:
|
|
133
|
+
return .read
|
|
134
|
+
case NetmeraInboxStatus.unread.rawValue:
|
|
135
|
+
return .unread
|
|
136
|
+
case NetmeraInboxStatus.all.rawValue:
|
|
137
|
+
fallthrough
|
|
138
|
+
default:
|
|
139
|
+
return .all
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
func parseInboxCount(for response: NetmeraInboxCountResponse) -> [String: Any] {
|
|
144
|
+
var data: [String: Any] = [:]
|
|
145
|
+
data["7"] = response.count(for: .all)
|
|
146
|
+
data["1"] = response.count(for: .read)
|
|
147
|
+
data["2"] = response.count(for: .unread)
|
|
148
|
+
data["4"] = response.count(for: .deleted)
|
|
149
|
+
return data
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
func parseUserCategoryPreferences(_ preferences: [NetmeraUserCategoryPreference]) -> [[String: Any]] {
|
|
153
|
+
var array: [[String: Any]] = []
|
|
154
|
+
for pref in preferences {
|
|
155
|
+
var data: [String: Any] = [:]
|
|
156
|
+
data["categoryId"] = pref.categoryId
|
|
157
|
+
data["categoryName"] = pref.categoryName
|
|
158
|
+
data["optInStatus"] = pref.categoryEnabled
|
|
159
|
+
array.append(data)
|
|
160
|
+
}
|
|
161
|
+
return array
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
func parseUserCategoryPreferenceListToMap(_ preferences: [NetmeraUserCategoryPreference]) -> [[String: Any]] {
|
|
165
|
+
var array: [[String: Any]] = []
|
|
166
|
+
|
|
167
|
+
for preference in preferences {
|
|
168
|
+
var data: [String: Any] = [:]
|
|
169
|
+
data["categoryId"] = preference.categoryId
|
|
170
|
+
data["categoryName"] = preference.categoryName
|
|
171
|
+
data["optInStatus"] = preference.categoryEnabled
|
|
172
|
+
array.append(data)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return array
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
func parseCouponObjects(_ couponObjects: [NetmeraCouponObject]) -> [[String: Any]] {
|
|
179
|
+
var array: [[String: Any]] = []
|
|
180
|
+
for couponObject in couponObjects {
|
|
181
|
+
array.append(mapCouponObject(couponObject))
|
|
182
|
+
}
|
|
183
|
+
return array
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
private func mapCouponObject(_ couponObject: NetmeraCouponObject) -> [String: Any] {
|
|
187
|
+
var data: [String: Any] = [
|
|
188
|
+
"couponId": couponObject.couponId,
|
|
189
|
+
"name": couponObject.name,
|
|
190
|
+
"code": couponObject.code
|
|
191
|
+
]
|
|
192
|
+
|
|
193
|
+
if let assignDate = couponObject.assignDate {
|
|
194
|
+
data["assignDate"] = String(format: "%f", assignDate.timeIntervalSince1970)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if let expireDate = couponObject.expireDate {
|
|
198
|
+
data["expireDate"] = String(format: "%f", expireDate.timeIntervalSince1970)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return data
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
private func mapAction(_ action: NetmeraPushAction) -> [String: Any] {
|
|
205
|
+
var dict: [String: Any] = [:]
|
|
206
|
+
dict["at"] = action.actionType?.rawValue
|
|
207
|
+
|
|
208
|
+
switch action.actionType {
|
|
209
|
+
case .openDeeplink:
|
|
210
|
+
if let a = action as? NetmeraDeeplinkAction {
|
|
211
|
+
dict["url"] = a.deeplinkURL
|
|
212
|
+
}
|
|
213
|
+
case .showWebView, .showWidget:
|
|
214
|
+
if let a = action as? NetmeraWebViewAction {
|
|
215
|
+
dict["url"] = a.url
|
|
216
|
+
dict["fsc"] = a.shouldShowPopupFullscreen
|
|
217
|
+
}
|
|
218
|
+
case .openApp, .review, .sendEvent, .share, .nothing:
|
|
219
|
+
break
|
|
220
|
+
case .none:
|
|
221
|
+
break
|
|
222
|
+
@unknown default:
|
|
223
|
+
break
|
|
224
|
+
}
|
|
225
|
+
return dict.filter { !($0.value is NSNull) }
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
private func formatDate(_ date: Date) -> String {
|
|
229
|
+
let formatter = DateFormatter()
|
|
230
|
+
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
|
231
|
+
return formatter.string(from: date)
|
|
232
|
+
}
|
|
233
|
+
}
|