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,759 @@
|
|
|
1
|
+
import NetmeraCore
|
|
2
|
+
import NetmeraNotification
|
|
3
|
+
import NetmeraAnalytic
|
|
4
|
+
import NetmeraGeofence
|
|
5
|
+
import NetmeraLocation
|
|
6
|
+
import NetmeraAdvertisingId
|
|
7
|
+
import NetmeraNotificationInbox
|
|
8
|
+
import NetmeraAnalyticAutotracking
|
|
9
|
+
import NetmeraNotificationCore
|
|
10
|
+
|
|
11
|
+
let ERROR_CODE_INBOX = "2016"
|
|
12
|
+
let ERROR_MESSAGE_INBOX = "There was a problem fetching inbox"
|
|
13
|
+
|
|
14
|
+
let ERROR_CODE_INBOX_NULL = "2017"
|
|
15
|
+
let ERROR_MESSAGE_INBOX_NULL = "Inbox is null or invalid status"
|
|
16
|
+
|
|
17
|
+
let ERROR_CODE_NOT_NEXT_PAGE = "2018"
|
|
18
|
+
let ERROR_MESSAGE_NOT_NEXT_PAGE = "Not next page"
|
|
19
|
+
|
|
20
|
+
let ERROR_CODE_UPDATE_STATUS = "2019"
|
|
21
|
+
let ERROR_MESSAGE_UPDATE_STATUS = "There was a problem updating status"
|
|
22
|
+
|
|
23
|
+
let ERROR_CODE_NULL_CATEGORY = "2020"
|
|
24
|
+
let ERROR_MESSAGE_NULL_CATEGORY = "Must call fetchCategory method first"
|
|
25
|
+
|
|
26
|
+
let ERROR_CODE_INVALID_PUSH_OBJECT = "2021"
|
|
27
|
+
let ERROR_MESSAGE_INVALID_PUSH_OBJECT = "Received NetmeraPushObject was not valid."
|
|
28
|
+
|
|
29
|
+
let ERROR_CODE_NULL_INBOX_STATUS = "2022"
|
|
30
|
+
let ERROR_MESSAGE_NULL_INBOX_STATUS = "Inbox status can't be null."
|
|
31
|
+
|
|
32
|
+
let ERROR_CODE_INBOX_STATUS = "2023"
|
|
33
|
+
let ERROR_MESSAGE_INBOX_STATUS = "Error occurred while fetching inbox count for status"
|
|
34
|
+
|
|
35
|
+
let ERROR_CODE_GET_CATEGORY_PREFERENCE = "2024"
|
|
36
|
+
let ERROR_MESSAGE_GET_CATEGORY_PREFERENCE = "Error occurred while fetching user category preference list."
|
|
37
|
+
|
|
38
|
+
let ERROR_CODE_SET_CATEGORY_PREFERENCE = "2025"
|
|
39
|
+
let ERROR_MESSAGE_SET_CATEGORY_PREFERENCE = "Error occurred while setting user category preference list."
|
|
40
|
+
|
|
41
|
+
let ERROR_CODE_COUPON_FETCH = "2026"
|
|
42
|
+
let ERROR_MESSAGE_COUPON_FETCH = "Error occurred while fetching coupons."
|
|
43
|
+
|
|
44
|
+
let ERROR_CODE_UPDATE_USER = "2027"
|
|
45
|
+
let ERROR_MESSAGE_UPDATE_USER = "Error occurred while updating user."
|
|
46
|
+
|
|
47
|
+
let ERROR_CODE_EMAIL_PERMISSION = "2028"
|
|
48
|
+
let ERROR_MESSAGE_EMAIL_PERMISSION = "Error occurred while fetching email permission"
|
|
49
|
+
|
|
50
|
+
let ERROR_CODE_SMS_PERMISSION = "2029"
|
|
51
|
+
let ERROR_MESSAGE_SMS_PERMISSION = "Error occurred while fetching sms permission"
|
|
52
|
+
|
|
53
|
+
let ERROR_CODE_WHATSAPP_PERMISSION = "2030"
|
|
54
|
+
let ERROR_MESSAGE_WHATSAPP_PERMISSION = "Error occurred while getting/setting WhatsApp permission"
|
|
55
|
+
|
|
56
|
+
let ERROR_CODE_NOTIFICATION_PERMISSION = "2033"
|
|
57
|
+
let ERROR_MESSAGE_NOTIFICATION_PERMISSION = "Error requesting notification permission"
|
|
58
|
+
|
|
59
|
+
@objc(RNNetmera)
|
|
60
|
+
public class RNNetmera: NSObject {
|
|
61
|
+
var netmeraInbox: NetmeraInboxManager?
|
|
62
|
+
var categoryManager: NetmeraInboxCategoryManager?
|
|
63
|
+
|
|
64
|
+
/// Tracks whether `Netmera.initialize()` and shared setup have completed at least once.
|
|
65
|
+
private static var isInitialized = false
|
|
66
|
+
|
|
67
|
+
/// Starts Netmera using API key and base URL from your app’s **Netmera-Config.plist**.
|
|
68
|
+
/// Call once early in `didFinishLaunchingWithOptions` from `AppDelegate`.
|
|
69
|
+
public static func initNetmera() {
|
|
70
|
+
guard !isInitialized else { return }
|
|
71
|
+
Netmera.initialize()
|
|
72
|
+
applyConfiguration()
|
|
73
|
+
isInitialized = true
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/// Starts Netmera using **explicit** API key and base URL (or switches environment at runtime).
|
|
77
|
+
///
|
|
78
|
+
/// - Parameters:
|
|
79
|
+
/// - params: Optional configuration parameters for the SDK.
|
|
80
|
+
public static func initialize(params: NetmeraParams) {
|
|
81
|
+
guard !isInitialized else { return }
|
|
82
|
+
Netmera.initialize(params: params)
|
|
83
|
+
applyConfiguration()
|
|
84
|
+
isInitialized = true
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
private static func applyConfiguration() {
|
|
88
|
+
setNetmeraHeaders()
|
|
89
|
+
Netmera.setPushLifecycleDelegate(RNNetmeraPushLifecycleDelegate.shared)
|
|
90
|
+
#if DEBUG
|
|
91
|
+
Netmera.setLogLevel(.debug)
|
|
92
|
+
#endif
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
private static func setNetmeraHeaders() {
|
|
96
|
+
Netmera.setAdditionalRequestHeaders([
|
|
97
|
+
"X-netmera-framework": "react",
|
|
98
|
+
"X-netmera-frameworkV": "2.0.0"
|
|
99
|
+
])
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@objc(requestPushNotificationAuthorization:withRejecter:)
|
|
103
|
+
public func requestPushNotificationAuthorization(
|
|
104
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
105
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
106
|
+
) {
|
|
107
|
+
Netmera.requestPushNotificationAuthorization(for: [.alert, .badge, .sound]) { granted, error in
|
|
108
|
+
if let error = error {
|
|
109
|
+
reject(
|
|
110
|
+
ERROR_CODE_NOTIFICATION_PERMISSION,
|
|
111
|
+
ERROR_MESSAGE_NOTIFICATION_PERMISSION,
|
|
112
|
+
error
|
|
113
|
+
)
|
|
114
|
+
} else {
|
|
115
|
+
resolve(granted)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@objc(currentExternalId:withRejecter:)
|
|
121
|
+
func currentExternalId(
|
|
122
|
+
resolve: RCTPromiseResolveBlock,
|
|
123
|
+
reject: RCTPromiseRejectBlock
|
|
124
|
+
) {
|
|
125
|
+
resolve(Netmera.getCurrentExternalId())
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@objc(checkNotificationPermission:withRejecter:)
|
|
129
|
+
func checkNotificationPermission(
|
|
130
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
131
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
132
|
+
) {
|
|
133
|
+
Netmera.checkNotificationPermission { permissionType in
|
|
134
|
+
switch permissionType {
|
|
135
|
+
case .notDetermined:
|
|
136
|
+
resolve("NOT_DETERMINED")
|
|
137
|
+
case .denied:
|
|
138
|
+
resolve("DENIED")
|
|
139
|
+
case .blocked:
|
|
140
|
+
resolve("BLOCKED")
|
|
141
|
+
case .granted:
|
|
142
|
+
resolve("GRANTED")
|
|
143
|
+
@unknown default:
|
|
144
|
+
resolve("unknown")
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@objc(requestPermissionsForLocation)
|
|
150
|
+
func requestPermissionsForLocation() {
|
|
151
|
+
Netmera.requestLocationAuthorization()
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@objc(setNetmeraMaxActiveRegions:)
|
|
155
|
+
func setNetmeraMaxActiveRegions(_ maxActiveRegions: NSInteger) {
|
|
156
|
+
Netmera.setNetmeraMaxActiveRegions(count: maxActiveRegions)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
@objc(enablePopupPresentation)
|
|
160
|
+
func enablePopupPresentation() {
|
|
161
|
+
Netmera.setPopupPresentationEnabled(true)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@objc(disablePopupPresentation)
|
|
165
|
+
func disablePopupPresentation() {
|
|
166
|
+
Netmera.setPopupPresentationEnabled(false)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@objc(dismissAllPresentations)
|
|
170
|
+
func dismissAllPresentations() {
|
|
171
|
+
Netmera.dismissAllPresentations()
|
|
172
|
+
}
|
|
173
|
+
|
|
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
|
+
}
|
|
193
|
+
|
|
194
|
+
@objc(startDataTransfer)
|
|
195
|
+
func startDataTransfer() {
|
|
196
|
+
Netmera.setDataTransferEnabled(true)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@objc(stopDataTransfer)
|
|
200
|
+
func stopDataTransfer() {
|
|
201
|
+
Netmera.setDataTransferEnabled(false)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@objc(kill)
|
|
205
|
+
func kill(){
|
|
206
|
+
Netmera.kill()
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
@objc(sendEvent:)
|
|
210
|
+
func sendEvent(_ eventDictionary: [String: Any]) {
|
|
211
|
+
var dict = eventDictionary.compactMapValues { $0 is NSNull ? nil : $0 }
|
|
212
|
+
|
|
213
|
+
if let eventKey = dict["code"] as? String,
|
|
214
|
+
let event = RNNetmeraEvent(eventKey: eventKey) {
|
|
215
|
+
|
|
216
|
+
dict.removeValue(forKey: "code")
|
|
217
|
+
|
|
218
|
+
if let revenue = dict["revenue"] as? Double {
|
|
219
|
+
event.revenue = revenue
|
|
220
|
+
dict.removeValue(forKey: "revenue")
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
let converted: [String: AnyCodable] = dict.reduce(into: [:]) { result, pair in
|
|
224
|
+
result[pair.key] = AnyCodable(pair.value)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
event.eventParameters = converted
|
|
228
|
+
Netmera.send(event)
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@objc(sendGenericEvent:attributes:)
|
|
233
|
+
func sendGenericEvent(_ code: String, attributes: [String: Any]) {
|
|
234
|
+
let filtered = attributes.filter { $0.value is NSNull == false }
|
|
235
|
+
Netmera.send(eventWithKey: code, attributes: filtered)
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@objc(identifyUser:hasCallback:withResolver:withRejecter:)
|
|
239
|
+
func identifyUser(_ userDictionary: [String: Any],
|
|
240
|
+
hasCallback: Bool,
|
|
241
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
242
|
+
reject: @escaping RCTPromiseRejectBlock) {
|
|
243
|
+
let user = NetmeraUserIdentify()
|
|
244
|
+
|
|
245
|
+
// Include a key only when present in the bridge map; value may be NSNull → clear on server.
|
|
246
|
+
if userDictionary["userId"] != nil {
|
|
247
|
+
user.userId = userDictionary["userId"] as? String
|
|
248
|
+
}
|
|
249
|
+
if userDictionary["msisdn"] != nil {
|
|
250
|
+
user.msisdn = userDictionary["msisdn"] as? String
|
|
251
|
+
}
|
|
252
|
+
if userDictionary["email"] != nil {
|
|
253
|
+
user.email = userDictionary["email"] as? String
|
|
254
|
+
}
|
|
255
|
+
if userDictionary["wpNumber"] != nil {
|
|
256
|
+
user.whatsAppNumber = userDictionary["wpNumber"] as? String
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
let completionBlock: ((Bool) -> Void)?
|
|
260
|
+
|
|
261
|
+
if (hasCallback) {
|
|
262
|
+
completionBlock = { success in
|
|
263
|
+
if success {
|
|
264
|
+
resolve(nil)
|
|
265
|
+
} else {
|
|
266
|
+
reject(ERROR_CODE_UPDATE_USER, ERROR_MESSAGE_UPDATE_USER, nil)
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
} else {
|
|
270
|
+
completionBlock = nil
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
Netmera.identifyUser(user, completion: completionBlock)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
@objc(updateUserProfile:hasCallback:withResolver:withRejecter:)
|
|
277
|
+
func updateUserProfile(_ userProfileDictionary: [String: Any],
|
|
278
|
+
hasCallback: Bool,
|
|
279
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
280
|
+
reject: @escaping RCTPromiseRejectBlock) {
|
|
281
|
+
let completionBlock: ((Bool) -> Void)?
|
|
282
|
+
|
|
283
|
+
if (hasCallback) {
|
|
284
|
+
completionBlock = { success in
|
|
285
|
+
if success {
|
|
286
|
+
resolve(nil)
|
|
287
|
+
} else {
|
|
288
|
+
reject(ERROR_CODE_UPDATE_USER, ERROR_MESSAGE_UPDATE_USER, nil)
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
} else {
|
|
292
|
+
completionBlock = nil
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
InternalNetmera.updateUserProfile(withDictionary: userProfileDictionary, completion: completionBlock)
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
@objc(fetchCoupons:max:withResolver:withRejecter:)
|
|
299
|
+
func fetchCoupons(_ page: Int, max: Int, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
300
|
+
let filter = NetmeraCouponFilter(page: page, max: max)
|
|
301
|
+
|
|
302
|
+
Netmera.fetchCoupons(using: filter) { result in
|
|
303
|
+
switch result {
|
|
304
|
+
case .success(let coupons):
|
|
305
|
+
let array = RNNetmeraUtils.shared.parseCouponObjects(coupons)
|
|
306
|
+
resolve(array)
|
|
307
|
+
case .failure(let error):
|
|
308
|
+
reject(ERROR_CODE_COUPON_FETCH, ERROR_MESSAGE_COUPON_FETCH, error)
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@objc(getUserCategoryPreferenceList:withRejecter:)
|
|
314
|
+
func getUserCategoryPreferenceList(resolve: @escaping RCTPromiseResolveBlock,
|
|
315
|
+
reject: @escaping RCTPromiseRejectBlock) {
|
|
316
|
+
Netmera.getUserCategoryPreferenceList { result in
|
|
317
|
+
switch result {
|
|
318
|
+
case .success(let categories):
|
|
319
|
+
let parsed = RNNetmeraUtils.shared.parseUserCategoryPreferenceListToMap(
|
|
320
|
+
categories
|
|
321
|
+
)
|
|
322
|
+
resolve(parsed)
|
|
323
|
+
case .failure(_):
|
|
324
|
+
reject(ERROR_CODE_GET_CATEGORY_PREFERENCE,
|
|
325
|
+
ERROR_MESSAGE_GET_CATEGORY_PREFERENCE,
|
|
326
|
+
nil)
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
@objc(setUserCategoryPreference:categoryEnabled:withResolver:withRejecter:)
|
|
332
|
+
func setUserCategoryPreference(_ categoryId: Int,
|
|
333
|
+
categoryEnabled: Bool,
|
|
334
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
335
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
336
|
+
Netmera.setUserCategoryPreference(categoryId: categoryId,
|
|
337
|
+
categoryEnabled: categoryEnabled) { result in
|
|
338
|
+
switch result {
|
|
339
|
+
case .success(_):
|
|
340
|
+
resolve(true)
|
|
341
|
+
case .failure(_):
|
|
342
|
+
reject(ERROR_CODE_SET_CATEGORY_PREFERENCE,
|
|
343
|
+
ERROR_MESSAGE_SET_CATEGORY_PREFERENCE,
|
|
344
|
+
nil)
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
@objc(getInitialURL:withRejecter:)
|
|
350
|
+
func getInitialURL(resolve: RCTPromiseResolveBlock,
|
|
351
|
+
reject: RCTPromiseRejectBlock) {
|
|
352
|
+
if let url = RNNetmeraRCTEventEmitter.getInitialUrl() {
|
|
353
|
+
resolve(url.absoluteString)
|
|
354
|
+
} else {
|
|
355
|
+
resolve(nil)
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
@objc(fetchInbox:withResolver:withRejecter:)
|
|
360
|
+
public func fetchInbox(_ inboxDictionary: [String: Any],
|
|
361
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
362
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
363
|
+
|
|
364
|
+
let statusRaw = (
|
|
365
|
+
inboxDictionary["status"] as? Int
|
|
366
|
+
) ?? NetmeraNotificationCore.NetmeraInboxStatus.default.rawValue
|
|
367
|
+
let status = NetmeraNotificationCore.NetmeraInboxStatus(rawValue: statusRaw)
|
|
368
|
+
|
|
369
|
+
let pageSize = inboxDictionary["pageSize"] as? Int ?? 10
|
|
370
|
+
let includeExpired = inboxDictionary["includeExpiredObjects"] as? Bool ?? false
|
|
371
|
+
let categories = inboxDictionary["categories"] as? [String]
|
|
372
|
+
|
|
373
|
+
let filter = NetmeraNotificationInbox.NetmeraInboxFilter(
|
|
374
|
+
status: status,
|
|
375
|
+
pageSize: pageSize,
|
|
376
|
+
shouldIncludeExpiredObjects: includeExpired,
|
|
377
|
+
categories: categories
|
|
378
|
+
)
|
|
379
|
+
|
|
380
|
+
guard let manager = Netmera.inboxManager(with: filter) else {
|
|
381
|
+
rejecter(ERROR_CODE_INBOX, ERROR_MESSAGE_INBOX, nil)
|
|
382
|
+
return
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
manager.inbox { result in
|
|
386
|
+
switch result {
|
|
387
|
+
case .success:
|
|
388
|
+
let array: [[String: Any]] = manager.objects.map {
|
|
389
|
+
RNNetmeraUtils.shared.dictionaryFromInboxPush($0)
|
|
390
|
+
}
|
|
391
|
+
resolver(array)
|
|
392
|
+
self.netmeraInbox = manager
|
|
393
|
+
break
|
|
394
|
+
case .failure(_):
|
|
395
|
+
rejecter(ERROR_CODE_INBOX, ERROR_MESSAGE_INBOX, nil)
|
|
396
|
+
break
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
@objc(fetchNextPage:withRejecter:)
|
|
402
|
+
func fetchNextPage(
|
|
403
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
404
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
405
|
+
) {
|
|
406
|
+
|
|
407
|
+
guard let inbox = netmeraInbox else {
|
|
408
|
+
rejecter(ERROR_CODE_INBOX, ERROR_MESSAGE_INBOX, nil)
|
|
409
|
+
return
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
inbox.nextPage { status in
|
|
413
|
+
switch status {
|
|
414
|
+
case .success:
|
|
415
|
+
let array = RNNetmeraUtils.shared.mapPushObjects(inbox.objects)
|
|
416
|
+
resolver(array)
|
|
417
|
+
case .failure(let error):
|
|
418
|
+
rejecter(ERROR_CODE_NOT_NEXT_PAGE, ERROR_MESSAGE_NOT_NEXT_PAGE, error)
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
@objc(countForStatus:withResolver:withRejecter:)
|
|
424
|
+
public func countForStatus(_ statusRaw: Int,
|
|
425
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
426
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
427
|
+
|
|
428
|
+
guard let inbox = netmeraInbox else {
|
|
429
|
+
rejecter(ERROR_CODE_INBOX_NULL,
|
|
430
|
+
ERROR_MESSAGE_INBOX_NULL,
|
|
431
|
+
nil)
|
|
432
|
+
return
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
let status = NetmeraNotificationCore.NetmeraInboxStatus(rawValue: statusRaw)
|
|
436
|
+
let count = inbox.count(for: status)
|
|
437
|
+
resolver(String(count))
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
@objc(inboxUpdateStatus:toIndex:status:withResolver:withRejecter:)
|
|
441
|
+
public func inboxUpdateStatus(_ fromIndex: Int,
|
|
442
|
+
toIndex: Int,
|
|
443
|
+
status: Int,
|
|
444
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
445
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
446
|
+
guard let inbox = netmeraInbox else {
|
|
447
|
+
rejecter(ERROR_CODE_NULL_INBOX_STATUS,
|
|
448
|
+
ERROR_MESSAGE_NULL_INBOX_STATUS,
|
|
449
|
+
nil)
|
|
450
|
+
return
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
let length = toIndex - fromIndex
|
|
454
|
+
guard length > 0, fromIndex >= 0, toIndex <= inbox.objects.count else {
|
|
455
|
+
rejecter(ERROR_CODE_UPDATE_STATUS,
|
|
456
|
+
ERROR_MESSAGE_UPDATE_STATUS,
|
|
457
|
+
nil)
|
|
458
|
+
return
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
let range = fromIndex..<toIndex
|
|
462
|
+
let pushObjects = Array(inbox.objects[range])
|
|
463
|
+
|
|
464
|
+
let statusEnum = NetmeraNotificationCore.NetmeraInboxStatus(rawValue: status)
|
|
465
|
+
|
|
466
|
+
inbox.updateStatus(statusEnum, for: pushObjects) { result in
|
|
467
|
+
switch result {
|
|
468
|
+
case .success:
|
|
469
|
+
resolver(true)
|
|
470
|
+
case .failure(let error):
|
|
471
|
+
rejecter(ERROR_CODE_UPDATE_STATUS,
|
|
472
|
+
"\(ERROR_CODE_UPDATE_STATUS): \(error.localizedDescription)",
|
|
473
|
+
nil)
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
@objc(fetchCategory:withResolver:withRejecter:)
|
|
480
|
+
public func fetchCategory(_ inboxDictionary: [String: Any],
|
|
481
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
482
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
483
|
+
let filter = RNNetmeraCategoryObject.getCategoryFilter(inboxDictionary)
|
|
484
|
+
|
|
485
|
+
guard let manager = Netmera.inboxCategoryManager(with: filter) else {
|
|
486
|
+
rejecter(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY, nil)
|
|
487
|
+
return
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
manager.inboxCategory { result in
|
|
491
|
+
switch result {
|
|
492
|
+
case .success(let isSuccess):
|
|
493
|
+
if isSuccess {
|
|
494
|
+
self.categoryManager = manager
|
|
495
|
+
let mappedCategories = RNNetmeraCategoryObject.mapCategoryObjects(
|
|
496
|
+
manager.categories
|
|
497
|
+
)
|
|
498
|
+
resolver(mappedCategories)
|
|
499
|
+
} else {
|
|
500
|
+
rejecter(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY, nil)
|
|
501
|
+
}
|
|
502
|
+
case .failure(let error):
|
|
503
|
+
rejecter(
|
|
504
|
+
ERROR_CODE_NULL_CATEGORY,
|
|
505
|
+
"\(ERROR_MESSAGE_NULL_CATEGORY): \(error.localizedDescription)",
|
|
506
|
+
nil
|
|
507
|
+
)
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
@objc(fetchNextCategoryPage:withRejecter:)
|
|
513
|
+
public func fetchNextCategoryPage(withResolver resolve: @escaping RCTPromiseResolveBlock,
|
|
514
|
+
withRejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
515
|
+
guard let category = categoryManager else {
|
|
516
|
+
reject(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY, nil)
|
|
517
|
+
return
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
category.nextPage { status in
|
|
521
|
+
switch status {
|
|
522
|
+
case .success(let isSuccess):
|
|
523
|
+
if isSuccess {
|
|
524
|
+
let mappedCategories = RNNetmeraCategoryObject.mapCategoryObjects(
|
|
525
|
+
category.categories
|
|
526
|
+
)
|
|
527
|
+
resolve(mappedCategories)
|
|
528
|
+
} else {
|
|
529
|
+
reject(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY, nil)
|
|
530
|
+
}
|
|
531
|
+
case .failure(let error):
|
|
532
|
+
reject(ERROR_CODE_NULL_CATEGORY,
|
|
533
|
+
"There was a problem fetching next category page: \(error.localizedDescription)",
|
|
534
|
+
nil)
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
@objc(handlePushObject:withResolver:withRejecter:)
|
|
540
|
+
public func handlePushObject(_ pushId: String,
|
|
541
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
542
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
543
|
+
|
|
544
|
+
guard let inbox = netmeraInbox else {
|
|
545
|
+
rejecter(ERROR_CODE_INBOX_NULL, ERROR_MESSAGE_INBOX_NULL, nil)
|
|
546
|
+
return
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
if let pushInboxObject = inbox.objects.first(
|
|
550
|
+
where: { $0.payload?.pushId == pushId
|
|
551
|
+
}),
|
|
552
|
+
let pushObject = pushInboxObject.push {
|
|
553
|
+
Netmera.handlePushObject(pushObject)
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
resolver(nil)
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
@objc(handleInteractiveAction:withResolver:withRejecter:)
|
|
560
|
+
public func handleInteractiveAction(_ interactiveActionId: String,
|
|
561
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
562
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
563
|
+
|
|
564
|
+
guard let inbox = netmeraInbox else {
|
|
565
|
+
rejecter(ERROR_CODE_INBOX_NULL, ERROR_MESSAGE_INBOX_NULL, nil)
|
|
566
|
+
return
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
for pushInboxObject in inbox.objects {
|
|
570
|
+
guard
|
|
571
|
+
let pushObject = pushInboxObject.push,
|
|
572
|
+
let actions = pushObject.interactiveAction
|
|
573
|
+
else {
|
|
574
|
+
continue
|
|
575
|
+
}
|
|
576
|
+
if let interactiveAction = actions.first(where: { $0.id == interactiveActionId }),
|
|
577
|
+
let action = interactiveAction.action {
|
|
578
|
+
Netmera.handleInteractiveAction(action, for: pushObject)
|
|
579
|
+
return
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
resolver(false)
|
|
584
|
+
}
|
|
585
|
+
|
|
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
|
+
@objc(updateStatusByCategories:status:withResolver:withRejecter:)
|
|
619
|
+
public func updateStatusByCategories(_ categoryList: [String],
|
|
620
|
+
status: Int,
|
|
621
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
622
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
623
|
+
|
|
624
|
+
guard let inbox = netmeraInbox else {
|
|
625
|
+
rejecter(ERROR_CODE_INBOX_NULL, ERROR_MESSAGE_INBOX_NULL, nil)
|
|
626
|
+
return
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
let netmeraStatus = NetmeraInboxStatus(rawValue: status)
|
|
630
|
+
|
|
631
|
+
inbox.updateStatus(netmeraStatus, for: categoryList) { result in
|
|
632
|
+
switch result {
|
|
633
|
+
case .success:
|
|
634
|
+
resolver(true)
|
|
635
|
+
case .failure(let error):
|
|
636
|
+
rejecter(
|
|
637
|
+
ERROR_CODE_UPDATE_STATUS,
|
|
638
|
+
"\(ERROR_MESSAGE_UPDATE_STATUS): \(error.localizedDescription)",
|
|
639
|
+
nil
|
|
640
|
+
)
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
@objc(updateAll:withResolver:withRejecter:)
|
|
646
|
+
func updateAll(inboxStatus: NSInteger,
|
|
647
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
648
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
649
|
+
guard let inbox = netmeraInbox else {
|
|
650
|
+
rejecter(ERROR_CODE_UPDATE_STATUS, ERROR_MESSAGE_UPDATE_STATUS, nil)
|
|
651
|
+
return
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
inbox.updateStatusForAllPushObjects(NetmeraInboxStatus(rawValue: inboxStatus)) { status in
|
|
655
|
+
switch status {
|
|
656
|
+
case .success:
|
|
657
|
+
resolver(true)
|
|
658
|
+
case .failure(let error):
|
|
659
|
+
rejecter(ERROR_CODE_UPDATE_STATUS, ERROR_MESSAGE_UPDATE_STATUS, error)
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
@objc(getInboxCountForStatus:withResolver:withRejecter:)
|
|
665
|
+
func getInboxCountForStatus(filterDictionary: NSDictionary,
|
|
666
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
667
|
+
rejecter: @escaping RCTPromiseRejectBlock) {
|
|
668
|
+
guard let statusValue = filterDictionary["status"] as? Int else {
|
|
669
|
+
rejecter(ERROR_CODE_NULL_INBOX_STATUS, ERROR_MESSAGE_NULL_INBOX_STATUS, nil)
|
|
670
|
+
return
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
let status = RNNetmeraUtils.shared.getInboxStatus(code: statusValue)
|
|
674
|
+
let shouldIncludeExpiredObjects = filterDictionary["includeExpiredObjects"] as? Bool ?? false
|
|
675
|
+
let categories = filterDictionary["categoryList"] as? [String] ?? []
|
|
676
|
+
|
|
677
|
+
let filter = NetmeraInboxCountFilter(
|
|
678
|
+
status: status,
|
|
679
|
+
shouldIncludeExpiredObjects: shouldIncludeExpiredObjects,
|
|
680
|
+
categories: categories
|
|
681
|
+
)
|
|
682
|
+
|
|
683
|
+
Netmera.fetchInboxCount(with: filter) { resultStatus in
|
|
684
|
+
switch resultStatus {
|
|
685
|
+
case .success(let response):
|
|
686
|
+
let responseMap = RNNetmeraUtils.shared.parseInboxCount(for: response)
|
|
687
|
+
resolver(responseMap)
|
|
688
|
+
case .failure(let error):
|
|
689
|
+
rejecter(ERROR_CODE_INBOX_STATUS, ERROR_MESSAGE_INBOX_STATUS, error)
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
|
|
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
|
+
}
|
|
758
|
+
|
|
759
|
+
}
|