react-native-netmera 1.11.3 → 2.0.0-alpha01

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +109 -120
  2. package/RNNetmera.podspec +30 -14
  3. package/android/build.gradle +83 -19
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +0 -5
  6. package/android/src/main/AndroidManifestNew.xml +5 -0
  7. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.kt +24 -0
  8. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.kt +54 -0
  9. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.kt +108 -0
  10. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.kt +24 -0
  11. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.kt +694 -0
  12. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.kt +17 -0
  13. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.kt +81 -0
  14. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.kt +32 -0
  15. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.kt +218 -0
  16. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.kt +25 -0
  17. package/ios/AnyCodable/AnyCodable.swift +151 -0
  18. package/ios/AnyCodable/AnyDecodable.swift +192 -0
  19. package/ios/AnyCodable/AnyEncodable.swift +295 -0
  20. package/ios/RNNetmera-Bridging-Header.h +3 -0
  21. package/ios/RNNetmera.mm +143 -0
  22. package/ios/RNNetmera.swift +759 -0
  23. package/ios/RNNetmeraCategoryObject.swift +61 -0
  24. package/ios/RNNetmeraEvent.swift +26 -0
  25. package/ios/RNNetmeraPushLifecycleDelegate.swift +47 -0
  26. package/ios/RNNetmeraRCTEventEmitter.mm +8 -0
  27. package/ios/RNNetmeraRCTEventEmitter.swift +134 -0
  28. package/ios/RNNetmeraUtils.swift +233 -0
  29. package/lib/module/Netmera.js +256 -0
  30. package/lib/module/Netmera.js.map +1 -0
  31. package/lib/module/events/NetmeraEvent.js +8 -0
  32. package/lib/module/events/NetmeraEvent.js.map +1 -0
  33. package/lib/module/events/NetmeraEventBannerOpen.js +13 -0
  34. package/lib/module/events/NetmeraEventBannerOpen.js.map +1 -0
  35. package/lib/module/events/NetmeraEventBatteryLevel.js +10 -0
  36. package/lib/module/events/NetmeraEventBatteryLevel.js.map +1 -0
  37. package/lib/module/events/NetmeraEventCategoryView.js +13 -0
  38. package/lib/module/events/NetmeraEventCategoryView.js.map +1 -0
  39. package/lib/module/events/NetmeraEventInAppPurchase.js +28 -0
  40. package/lib/module/events/NetmeraEventInAppPurchase.js.map +1 -0
  41. package/lib/module/events/NetmeraEventLogin.js +10 -0
  42. package/lib/module/events/NetmeraEventLogin.js.map +1 -0
  43. package/lib/module/events/NetmeraEventRegister.js +10 -0
  44. package/lib/module/events/NetmeraEventRegister.js.map +1 -0
  45. package/lib/module/events/NetmeraEventScreenView.js +22 -0
  46. package/lib/module/events/NetmeraEventScreenView.js.map +1 -0
  47. package/lib/module/events/NetmeraEventSearch.js +13 -0
  48. package/lib/module/events/NetmeraEventSearch.js.map +1 -0
  49. package/lib/module/events/NetmeraEventShare.js +13 -0
  50. package/lib/module/events/NetmeraEventShare.js.map +1 -0
  51. package/lib/module/events/commerce/NetmeraEventCartAddProduct.js +13 -0
  52. package/lib/module/events/commerce/NetmeraEventCartAddProduct.js.map +1 -0
  53. package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js +10 -0
  54. package/lib/module/events/commerce/NetmeraEventCartRemoveProduct.js.map +1 -0
  55. package/lib/module/events/commerce/NetmeraEventCartView.js +13 -0
  56. package/lib/module/events/commerce/NetmeraEventCartView.js.map +1 -0
  57. package/lib/module/events/commerce/NetmeraEventOrderCancel.js +19 -0
  58. package/lib/module/events/commerce/NetmeraEventOrderCancel.js.map +1 -0
  59. package/lib/module/events/commerce/NetmeraEventProductComment.js +7 -0
  60. package/lib/module/events/commerce/NetmeraEventProductComment.js.map +1 -0
  61. package/lib/module/events/commerce/NetmeraEventProductRate.js +10 -0
  62. package/lib/module/events/commerce/NetmeraEventProductRate.js.map +1 -0
  63. package/lib/module/events/commerce/NetmeraEventProductView.js +7 -0
  64. package/lib/module/events/commerce/NetmeraEventProductView.js.map +1 -0
  65. package/lib/module/events/commerce/NetmeraEventPurchase.js +34 -0
  66. package/lib/module/events/commerce/NetmeraEventPurchase.js.map +1 -0
  67. package/lib/module/events/commerce/NetmeraEventWishList.js +7 -0
  68. package/lib/module/events/commerce/NetmeraEventWishList.js.map +1 -0
  69. package/lib/module/events/commerce/NetmeraLineItem.js +9 -0
  70. package/lib/module/events/commerce/NetmeraLineItem.js.map +1 -0
  71. package/lib/module/events/commerce/NetmeraProduct.js +46 -0
  72. package/lib/module/events/commerce/NetmeraProduct.js.map +1 -0
  73. package/lib/module/events/media/NetmeraEventContent.js +42 -0
  74. package/lib/module/events/media/NetmeraEventContent.js.map +1 -0
  75. package/lib/module/events/media/NetmeraEventContentComment.js +7 -0
  76. package/lib/module/events/media/NetmeraEventContentComment.js.map +1 -0
  77. package/lib/module/events/media/NetmeraEventContentRate.js +10 -0
  78. package/lib/module/events/media/NetmeraEventContentRate.js.map +1 -0
  79. package/lib/module/events/media/NetmeraEventContentView.js +7 -0
  80. package/lib/module/events/media/NetmeraEventContentView.js.map +1 -0
  81. package/lib/module/index.js +43 -0
  82. package/lib/module/index.js.map +1 -0
  83. package/lib/module/models/NMCategoryPreference.js +8 -0
  84. package/lib/module/models/NMCategoryPreference.js.map +1 -0
  85. package/lib/module/models/NMInboxStatus.js +11 -0
  86. package/lib/module/models/NMInboxStatus.js.map +1 -0
  87. package/lib/module/models/NMInboxStatusCountFilter.js +12 -0
  88. package/lib/module/models/NMInboxStatusCountFilter.js.map +1 -0
  89. package/lib/module/models/NetmeraCategory.js +8 -0
  90. package/lib/module/models/NetmeraCategory.js.map +1 -0
  91. package/lib/module/models/NetmeraCategoryFilter.js +8 -0
  92. package/lib/module/models/NetmeraCategoryFilter.js.map +1 -0
  93. package/lib/module/models/NetmeraCouponObject.js +8 -0
  94. package/lib/module/models/NetmeraCouponObject.js.map +1 -0
  95. package/lib/module/models/NetmeraInbox.js +8 -0
  96. package/lib/module/models/NetmeraInbox.js.map +1 -0
  97. package/lib/module/models/NetmeraInboxFilter.js +8 -0
  98. package/lib/module/models/NetmeraInboxFilter.js.map +1 -0
  99. package/lib/module/models/NetmeraProfileAttribute.js +75 -0
  100. package/lib/module/models/NetmeraProfileAttribute.js.map +1 -0
  101. package/lib/module/models/NetmeraUser.js +89 -0
  102. package/lib/module/models/NetmeraUser.js.map +1 -0
  103. package/lib/module/models/NetmeraUserProfile.js +58 -0
  104. package/lib/module/models/NetmeraUserProfile.js.map +1 -0
  105. package/lib/module/models/NotificationPermissionStatus.js +10 -0
  106. package/lib/module/models/NotificationPermissionStatus.js.map +1 -0
  107. package/lib/module/package.json +1 -0
  108. package/lib/module/utils/DeviceUtils.js +10 -0
  109. package/lib/module/utils/DeviceUtils.js.map +1 -0
  110. package/lib/module/utils/Optional.js +32 -0
  111. package/lib/module/utils/Optional.js.map +1 -0
  112. package/lib/module/utils/RNNetmera.js +16 -0
  113. package/lib/module/utils/RNNetmera.js.map +1 -0
  114. package/lib/typescript/package.json +1 -0
  115. package/lib/typescript/src/Netmera.d.ts +70 -0
  116. package/lib/typescript/src/Netmera.d.ts.map +1 -0
  117. package/lib/typescript/src/events/NetmeraEvent.d.ts +5 -0
  118. package/lib/typescript/src/events/NetmeraEvent.d.ts.map +1 -0
  119. package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts +9 -0
  120. package/lib/typescript/src/events/NetmeraEventBannerOpen.d.ts.map +1 -0
  121. package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts +7 -0
  122. package/lib/typescript/src/events/NetmeraEventBatteryLevel.d.ts.map +1 -0
  123. package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts +9 -0
  124. package/lib/typescript/src/events/NetmeraEventCategoryView.d.ts.map +1 -0
  125. package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts +19 -0
  126. package/lib/typescript/src/events/NetmeraEventInAppPurchase.d.ts.map +1 -0
  127. package/lib/typescript/src/events/NetmeraEventLogin.d.ts +7 -0
  128. package/lib/typescript/src/events/NetmeraEventLogin.d.ts.map +1 -0
  129. package/lib/typescript/src/events/NetmeraEventRegister.d.ts +7 -0
  130. package/lib/typescript/src/events/NetmeraEventRegister.d.ts.map +1 -0
  131. package/lib/typescript/src/events/NetmeraEventScreenView.d.ts +15 -0
  132. package/lib/typescript/src/events/NetmeraEventScreenView.d.ts.map +1 -0
  133. package/lib/typescript/src/events/NetmeraEventSearch.d.ts +9 -0
  134. package/lib/typescript/src/events/NetmeraEventSearch.d.ts.map +1 -0
  135. package/lib/typescript/src/events/NetmeraEventShare.d.ts +9 -0
  136. package/lib/typescript/src/events/NetmeraEventShare.d.ts.map +1 -0
  137. package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts +9 -0
  138. package/lib/typescript/src/events/commerce/NetmeraEventCartAddProduct.d.ts.map +1 -0
  139. package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts +7 -0
  140. package/lib/typescript/src/events/commerce/NetmeraEventCartRemoveProduct.d.ts.map +1 -0
  141. package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts +9 -0
  142. package/lib/typescript/src/events/commerce/NetmeraEventCartView.d.ts.map +1 -0
  143. package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts +13 -0
  144. package/lib/typescript/src/events/commerce/NetmeraEventOrderCancel.d.ts.map +1 -0
  145. package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts +5 -0
  146. package/lib/typescript/src/events/commerce/NetmeraEventProductComment.d.ts.map +1 -0
  147. package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts +7 -0
  148. package/lib/typescript/src/events/commerce/NetmeraEventProductRate.d.ts.map +1 -0
  149. package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts +5 -0
  150. package/lib/typescript/src/events/commerce/NetmeraEventProductView.d.ts.map +1 -0
  151. package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts +24 -0
  152. package/lib/typescript/src/events/commerce/NetmeraEventPurchase.d.ts.map +1 -0
  153. package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts +5 -0
  154. package/lib/typescript/src/events/commerce/NetmeraEventWishList.d.ts.map +1 -0
  155. package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts +6 -0
  156. package/lib/typescript/src/events/commerce/NetmeraLineItem.d.ts.map +1 -0
  157. package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts +23 -0
  158. package/lib/typescript/src/events/commerce/NetmeraProduct.d.ts.map +1 -0
  159. package/lib/typescript/src/events/media/NetmeraEventContent.d.ts +23 -0
  160. package/lib/typescript/src/events/media/NetmeraEventContent.d.ts.map +1 -0
  161. package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts +5 -0
  162. package/lib/typescript/src/events/media/NetmeraEventContentComment.d.ts.map +1 -0
  163. package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts +7 -0
  164. package/lib/typescript/src/events/media/NetmeraEventContentRate.d.ts.map +1 -0
  165. package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts +5 -0
  166. package/lib/typescript/src/events/media/NetmeraEventContentView.d.ts.map +1 -0
  167. package/lib/typescript/src/index.d.ts +39 -0
  168. package/lib/typescript/src/index.d.ts.map +1 -0
  169. package/lib/typescript/src/models/NMCategoryPreference.d.ts +6 -0
  170. package/lib/typescript/src/models/NMCategoryPreference.d.ts.map +1 -0
  171. package/lib/typescript/src/models/NMInboxStatus.d.ts +8 -0
  172. package/lib/typescript/src/models/NMInboxStatus.d.ts.map +1 -0
  173. package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts +7 -0
  174. package/lib/typescript/src/models/NMInboxStatusCountFilter.d.ts.map +1 -0
  175. package/lib/typescript/src/models/NetmeraCategory.d.ts +10 -0
  176. package/lib/typescript/src/models/NetmeraCategory.d.ts.map +1 -0
  177. package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts +6 -0
  178. package/lib/typescript/src/models/NetmeraCategoryFilter.d.ts.map +1 -0
  179. package/lib/typescript/src/models/NetmeraCouponObject.d.ts +8 -0
  180. package/lib/typescript/src/models/NetmeraCouponObject.d.ts.map +1 -0
  181. package/lib/typescript/src/models/NetmeraInbox.d.ts +22 -0
  182. package/lib/typescript/src/models/NetmeraInbox.d.ts.map +1 -0
  183. package/lib/typescript/src/models/NetmeraInboxFilter.d.ts +7 -0
  184. package/lib/typescript/src/models/NetmeraInboxFilter.d.ts.map +1 -0
  185. package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts +33 -0
  186. package/lib/typescript/src/models/NetmeraProfileAttribute.d.ts.map +1 -0
  187. package/lib/typescript/src/models/NetmeraUser.d.ts +25 -0
  188. package/lib/typescript/src/models/NetmeraUser.d.ts.map +1 -0
  189. package/lib/typescript/src/models/NetmeraUserProfile.d.ts +21 -0
  190. package/lib/typescript/src/models/NetmeraUserProfile.d.ts.map +1 -0
  191. package/lib/typescript/src/models/NotificationPermissionStatus.d.ts +7 -0
  192. package/lib/typescript/src/models/NotificationPermissionStatus.d.ts.map +1 -0
  193. package/lib/typescript/src/utils/DeviceUtils.d.ts +3 -0
  194. package/lib/typescript/src/utils/DeviceUtils.d.ts.map +1 -0
  195. package/lib/typescript/src/utils/Optional.d.ts +15 -0
  196. package/lib/typescript/src/utils/Optional.d.ts.map +1 -0
  197. package/lib/typescript/src/utils/RNNetmera.d.ts +5 -0
  198. package/lib/typescript/src/utils/RNNetmera.d.ts.map +1 -0
  199. package/package.json +104 -17
  200. package/src/Netmera.ts +139 -88
  201. package/src/events/NetmeraEvent.ts +1 -1
  202. package/src/events/NetmeraEventBannerOpen.ts +4 -4
  203. package/src/events/NetmeraEventBatteryLevel.ts +3 -3
  204. package/src/events/NetmeraEventCategoryView.ts +4 -4
  205. package/src/events/NetmeraEventInAppPurchase.ts +10 -10
  206. package/src/events/NetmeraEventLogin.ts +3 -3
  207. package/src/events/NetmeraEventRegister.ts +3 -3
  208. package/src/events/NetmeraEventScreenView.ts +7 -7
  209. package/src/events/NetmeraEventSearch.ts +4 -4
  210. package/src/events/NetmeraEventShare.ts +4 -4
  211. package/src/events/commerce/NetmeraEventCartAddProduct.ts +4 -4
  212. package/src/events/commerce/NetmeraEventCartRemoveProduct.ts +3 -3
  213. package/src/events/commerce/NetmeraEventCartView.ts +4 -4
  214. package/src/events/commerce/NetmeraEventOrderCancel.ts +6 -6
  215. package/src/events/commerce/NetmeraEventProductComment.ts +2 -2
  216. package/src/events/commerce/NetmeraEventProductRate.ts +3 -3
  217. package/src/events/commerce/NetmeraEventProductView.ts +2 -2
  218. package/src/events/commerce/NetmeraEventPurchase.ts +13 -13
  219. package/src/events/commerce/NetmeraEventWishList.ts +2 -2
  220. package/src/events/commerce/NetmeraLineItem.ts +2 -2
  221. package/src/events/commerce/NetmeraProduct.ts +10 -10
  222. package/src/events/media/NetmeraEventContent.ts +8 -8
  223. package/src/events/media/NetmeraEventContentComment.ts +2 -2
  224. package/src/events/media/NetmeraEventContentRate.ts +3 -3
  225. package/src/events/media/NetmeraEventContentView.ts +2 -2
  226. package/src/index.ts +87 -0
  227. package/src/models/NMCategoryPreference.ts +1 -1
  228. package/src/models/NMInboxStatusCountFilter.ts +1 -1
  229. package/src/models/NetmeraCategory.ts +2 -2
  230. package/src/models/NetmeraCategoryFilter.ts +1 -1
  231. package/src/models/NetmeraCouponObject.ts +1 -1
  232. package/src/models/NetmeraInbox.ts +1 -1
  233. package/src/models/NetmeraInboxFilter.ts +1 -1
  234. package/src/models/NetmeraProfileAttribute.ts +81 -0
  235. package/src/models/NetmeraUser.ts +76 -74
  236. package/src/models/NetmeraUserProfile.ts +67 -0
  237. package/src/models/NotificationPermissionStatus.ts +4 -4
  238. package/src/utils/DeviceUtils.ts +3 -3
  239. package/src/utils/Optional.ts +31 -0
  240. package/src/utils/RNNetmera.ts +24 -0
  241. package/.eslintignore +0 -7
  242. package/.gitattributes +0 -1
  243. package/.github/workflows/code_quality_check.yaml +0 -38
  244. package/.prettierignore +0 -14
  245. package/.yarnrc.yml +0 -1
  246. package/android/.project +0 -17
  247. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  248. package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  249. package/android/gradlew +0 -172
  250. package/android/gradlew.bat +0 -84
  251. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmera.java +0 -24
  252. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraCategoryObject.java +0 -56
  253. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraConfiguration.java +0 -154
  254. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraEvent.java +0 -36
  255. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraModule.java +0 -631
  256. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPackage.java +0 -35
  257. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushBroadcastReceiver.java +0 -86
  258. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraPushHeadlessService.java +0 -32
  259. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUser.java +0 -24
  260. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraUtil.java +0 -354
  261. package/android/src/main/java/com/netmera/reactnativesdk/RNNetmeraWebWidgetCallbacks.java +0 -27
  262. package/index.ts +0 -80
  263. package/ios/RNNetmera.h +0 -32
  264. package/ios/RNNetmera.m +0 -507
  265. package/ios/RNNetmera.xcodeproj/project.pbxproj +0 -316
  266. package/ios/RNNetmera.xcodeproj/xcshareddata/xcschemes/RNNetmera.xcscheme +0 -67
  267. package/ios/RNNetmera.xcworkspace/contents.xcworkspacedata +0 -9
  268. package/ios/RNNetmeraCategoryObject.h +0 -16
  269. package/ios/RNNetmeraCategoryObject.m +0 -59
  270. package/ios/RNNetmeraEvent.h +0 -17
  271. package/ios/RNNetmeraEvent.m +0 -27
  272. package/ios/RNNetmeraRCTEventEmitter.h +0 -23
  273. package/ios/RNNetmeraRCTEventEmitter.m +0 -142
  274. package/ios/RNNetmeraUser.h +0 -15
  275. package/ios/RNNetmeraUser.m +0 -19
  276. package/ios/RNNetmeraUtils.h +0 -27
  277. package/ios/RNNetmeraUtils.m +0 -128
  278. package/scripts/update-version.js +0 -38
  279. package/scripts/yarn_rebuild.sh +0 -31
  280. package/tsconfig.json +0 -3
@@ -0,0 +1,24 @@
1
+ package com.netmera.reactnativesdk
2
+
3
+ import com.google.gson.annotations.SerializedName
4
+ import com.netmera.NetmeraEvent
5
+
6
+ class RNNetmeraEvent : NetmeraEvent() {
7
+ @SerializedName("prms")
8
+ private var eventParameters: MutableMap<String?, Any?>? = null
9
+
10
+ @SerializedName("code")
11
+ private var code: String? = null
12
+
13
+ fun setEventParameters(eventParameters: MutableMap<String?, Any?>?) {
14
+ this.eventParameters = eventParameters
15
+ }
16
+
17
+ fun setCode(code: String) {
18
+ this.code = code
19
+ }
20
+
21
+ override fun eventCode(): String {
22
+ return code!!
23
+ }
24
+ }
@@ -0,0 +1,694 @@
1
+ package com.netmera.reactnativesdk
2
+
3
+ import android.app.Activity
4
+ import android.os.Bundle
5
+ import android.util.Log
6
+ import com.facebook.react.bridge.Promise
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
9
+ import com.facebook.react.bridge.ReactMethod
10
+ import com.facebook.react.bridge.ReadableMap
11
+ import com.facebook.react.modules.core.DeviceEventManagerModule
12
+ import com.google.firebase.messaging.RemoteMessage
13
+ import com.netmera.InternalNetmera
14
+ import com.netmera.NMUser
15
+ import com.netmera.Netmera
16
+ import com.netmera.NetmeraError
17
+ import com.netmera.NetmeraInbox
18
+ import com.netmera.NetmeraInboxCategory
19
+ import com.netmera.NetmeraInboxFilter
20
+ import com.netmera.callbacks.NMCategoryPreferenceFetchCallback
21
+ import com.netmera.callbacks.NMCategoryPreferenceSetCallback
22
+ import com.netmera.callbacks.NMFetchCouponsResultListener
23
+ import com.netmera.callbacks.NMInboxCountResultListener
24
+ import com.netmera.callbacks.NMPermissionResultListener
25
+ import com.netmera.callbacks.NMUpdateUserListener
26
+ import com.netmera.callbacks.NMUpdateUserProfileListener
27
+ import com.netmera.data.NMCategoryPreference
28
+ import com.netmera.data.NMInboxStatusCount
29
+ import com.netmera.data.NMInboxStatusCountFilter
30
+ import com.netmera.reactnativesdk.RNNetmeraUtil.getInboxStatus
31
+ import com.netmera.reactnativesdk.RNNetmeraUtil.mapPushObjects
32
+ import com.netmera.reactnativesdk.RNNetmeraUtil.parseInboxCountForStatusToMap
33
+ import com.netmera.reactnativesdk.RNNetmeraUtil.toMap
34
+
35
+ class RNNetmeraModule(reactContext: ReactApplicationContext) :
36
+ ReactContextBaseJavaModule(reactContext) {
37
+
38
+ init {
39
+ Companion.reactContext = reactContext
40
+ }
41
+
42
+ private var netmeraInbox: NetmeraInbox? = null
43
+ private var netmeraInboxCategory: NetmeraInboxCategory? = null
44
+
45
+ override fun getName(): String = NAME
46
+
47
+ @ReactMethod
48
+ fun currentExternalId(promise: Promise) {
49
+ promise.resolve(Netmera.getCurrentExternalId())
50
+ }
51
+
52
+ @ReactMethod(isBlockingSynchronousMethod = true)
53
+ fun checkNotificationPermission(): String {
54
+ val activity: Activity? = reactContext.currentActivity
55
+ return if (activity != null) {
56
+ Netmera.checkNotificationPermission(activity).toString()
57
+ } else {
58
+ Log.e(NAME, "Cannot call checkNotificationPermission because current ReactActivity is null")
59
+ "null"
60
+ }
61
+ }
62
+
63
+ @ReactMethod
64
+ fun requestPushNotificationAuthorization(promise: Promise) {
65
+ val activity: Activity? = reactContext.currentActivity
66
+ if (activity == null) {
67
+ promise.reject(
68
+ ERROR_CODE_INVALID_ACTIVITY,
69
+ ERROR_MESSAGE_INVALID_ACTIVITY,
70
+ null
71
+ )
72
+ return
73
+ }
74
+ Netmera.requestNotificationPermissions(
75
+ activity,
76
+ object : NMPermissionResultListener {
77
+ override fun onSuccess(isAllowed: Boolean) {
78
+ promise.resolve(isAllowed)
79
+ }
80
+
81
+ override fun onFailure(error: String?) {
82
+ promise.reject(
83
+ ERROR_CODE_NOTIFICATION_PERMISSION,
84
+ ERROR_MESSAGE_NOTIFICATION_PERMISSION + error.let { "Reason: $it" },
85
+ )
86
+ }
87
+ }
88
+ )
89
+ }
90
+
91
+ @ReactMethod
92
+ fun requestPermissionsForLocation() {
93
+ Netmera.requestPermissionsForLocation()
94
+ }
95
+
96
+ @ReactMethod
97
+ fun setNetmeraMaxActiveRegions(maxActiveRegions: Int) {
98
+ Netmera.setNetmeraMaxActiveRegions(maxActiveRegions)
99
+ }
100
+
101
+ @ReactMethod
102
+ fun enablePopupPresentation() {
103
+ Netmera.enablePopupPresentation()
104
+ }
105
+
106
+ @ReactMethod
107
+ fun disablePopupPresentation() {
108
+ Netmera.disablePopupPresentation()
109
+ }
110
+
111
+ @ReactMethod
112
+ fun dismissAllPresentations() {
113
+ Netmera.dismissAllPresentations()
114
+ }
115
+
116
+ @ReactMethod
117
+ fun enablePush() {
118
+ Netmera.enablePush()
119
+ }
120
+
121
+ @ReactMethod
122
+ fun disablePush() {
123
+ Netmera.disablePush()
124
+ }
125
+
126
+ @ReactMethod
127
+ fun isPushEnabled(promise: Promise) {
128
+ promise.resolve(Netmera.isPushEnabled())
129
+ }
130
+
131
+ @ReactMethod
132
+ fun kill() {
133
+ Netmera.kill()
134
+ }
135
+
136
+ @ReactMethod
137
+ fun fetchCoupons(page: Int, max: Int, promise: Promise) {
138
+ Netmera.fetchCoupons(page, max, object : NMFetchCouponsResultListener {
139
+ override fun onSuccess(coupons: List<com.netmera.data.NMCouponDetail>?) {
140
+ promise.resolve(RNNetmeraUtil.mapCouponObjects(coupons ?: emptyList()))
141
+ }
142
+
143
+ override fun onFailure(error: String?) {
144
+ promise.reject(ERROR_CODE_COUPON_FETCH, ERROR_MESSAGE_COUPON_FETCH)
145
+ }
146
+ })
147
+ }
148
+
149
+ @ReactMethod
150
+ fun fetchInbox(readableMap: ReadableMap, promise: Promise) {
151
+ val builder = NetmeraInboxFilter.Builder()
152
+
153
+ if (hasKey(readableMap, CATEGORIES)) {
154
+ val categories = readableMap.toHashMap()[CATEGORIES]
155
+ when (categories) {
156
+ is String -> builder.categories(listOf(categories))
157
+ is List<*> -> builder.categories(categories.filterIsInstance<String>())
158
+ }
159
+ }
160
+
161
+ if (hasKey(readableMap, STATUS)) {
162
+ builder.status(readableMap.getInt(STATUS))
163
+ }
164
+
165
+ if (hasKey(readableMap, PAGE_SIZE)) {
166
+ builder.pageSize(readableMap.getInt(PAGE_SIZE))
167
+ }
168
+
169
+ if (hasKey(readableMap, INCLUDE_EXPIRED_OBJECTS)) {
170
+ builder.includeExpiredObjects(readableMap.getBoolean(INCLUDE_EXPIRED_OBJECTS))
171
+ }
172
+
173
+ val filter = builder.build()
174
+
175
+ Netmera.fetchInbox(
176
+ filter
177
+ ) { inbox, netmeraError -> setInbox(inbox, netmeraError, promise) }
178
+ }
179
+
180
+ @ReactMethod
181
+ fun fetchNextPage(promise: Promise) {
182
+ if (netmeraInbox == null) {
183
+ promise.reject(ERROR_CODE_NULL_INBOX, ERROR_MESSAGE_NULL_INBOX)
184
+ return
185
+ }
186
+
187
+ if (netmeraInbox!!.hasNextPage()) {
188
+ netmeraInbox!!.fetchNextPage { netmeraInbox, error -> setInbox(netmeraInbox, error, promise) }
189
+ } else {
190
+ promise.reject(ERROR_CODE_NOT_NEXT_PAGE, ERROR_MESSAGE_NOT_NEXT_PAGE)
191
+ }
192
+ }
193
+
194
+ @ReactMethod
195
+ fun countForStatus(status: Int, promise: Promise) {
196
+ if (netmeraInbox == null) {
197
+ promise.reject(ERROR_CODE_NULL_INBOX, ERROR_MESSAGE_NULL_INBOX)
198
+ return
199
+ }
200
+
201
+ promise.resolve(netmeraInbox!!.countForStatus(status))
202
+ }
203
+
204
+ @ReactMethod
205
+ fun inboxUpdateStatus(fromIndex: Int, toIndex: Int, status: Int, promise: Promise) {
206
+ if (netmeraInbox == null) {
207
+ promise.reject(ERROR_CODE_NULL_INBOX, ERROR_MESSAGE_NULL_INBOX)
208
+ return
209
+ }
210
+
211
+ try {
212
+ val pushObjects = netmeraInbox!!.pushObjects().subList(fromIndex, toIndex)
213
+ netmeraInbox!!.updateStatus(
214
+ pushObjects, status
215
+ ) { netmeraError ->
216
+ if (netmeraError == null) {
217
+ promise.resolve(null)
218
+ } else {
219
+ promise.reject(ERROR_CODE_UPDATE_STATUS, ERROR_MESSAGE_UPDATE_STATUS)
220
+ }
221
+ }
222
+ } catch (e: IndexOutOfBoundsException) {
223
+ promise.reject("", e.message)
224
+ }
225
+ }
226
+
227
+ @ReactMethod
228
+ fun fetchCategory(readableMap: ReadableMap, promise: Promise) {
229
+ Netmera.fetchCategory(
230
+ RNNetmeraCategoryObject.getInboxObject(readableMap)
231
+ ) { netmeraInboxCategory, netmeraError ->
232
+ setCategory(
233
+ netmeraInboxCategory,
234
+ netmeraError,
235
+ promise
236
+ )
237
+ }
238
+ }
239
+
240
+ @ReactMethod
241
+ fun fetchNextCategoryPage(promise: Promise) {
242
+ if (netmeraInboxCategory == null) {
243
+ promise.reject(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY)
244
+ return
245
+ }
246
+
247
+ if (netmeraInboxCategory!!.hasNextPage()) {
248
+ netmeraInboxCategory!!.fetchNextPage { netmeraInboxCategory, netmeraError ->
249
+ setCategory(
250
+ netmeraInboxCategory,
251
+ netmeraError,
252
+ promise
253
+ )
254
+ }
255
+ } else {
256
+ promise.reject(ERROR_CODE_NOT_NEXT_PAGE, ERROR_MESSAGE_NOT_NEXT_PAGE)
257
+ }
258
+ }
259
+
260
+ @ReactMethod
261
+ fun handleLastMessage(categoryName: String?, promise: Promise) {
262
+ if (netmeraInboxCategory == null) {
263
+ promise.reject(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY)
264
+ return
265
+ }
266
+
267
+ if (categoryName == null || categoryName.isEmpty()) {
268
+ promise.reject(ERROR_CODE_INVALID_PUSH_OBJECT, ERROR_MESSAGE_INVALID_PUSH_OBJECT)
269
+ return
270
+ }
271
+
272
+ for (category in netmeraInboxCategory!!.categories()) {
273
+ if (categoryName == category.categoryName) {
274
+ Netmera.handlePushObject(reactApplicationContext.currentActivity!!, category.lastMessage)
275
+ break
276
+ }
277
+ }
278
+ }
279
+
280
+ @ReactMethod
281
+ fun updateStatusByCategories(fromIndex: Int, toIndex: Int, status: Int, promise: Promise) {
282
+ if (netmeraInboxCategory == null) {
283
+ promise.reject(ERROR_CODE_NULL_CATEGORY, ERROR_MESSAGE_NULL_CATEGORY)
284
+ return
285
+ }
286
+
287
+ try {
288
+ val categoryNames: MutableList<String?> = ArrayList()
289
+
290
+ for (category in netmeraInboxCategory!!.categories().subList(fromIndex, toIndex)) {
291
+ categoryNames.add(category.categoryName)
292
+ }
293
+
294
+ Netmera.updateStatusByCategories(
295
+ status, categoryNames
296
+ ) { netmeraError ->
297
+ if (netmeraError == null) {
298
+ promise.resolve(null)
299
+ } else {
300
+ promise.reject(ERROR_CODE_UPDATE_STATUS, ERROR_MESSAGE_UPDATE_STATUS)
301
+ }
302
+ }
303
+ } catch (e: java.lang.IndexOutOfBoundsException) {
304
+ promise.reject("", e.message)
305
+ }
306
+ }
307
+
308
+ @ReactMethod
309
+ fun updateAll(inboxStatus: Int, promise: Promise) {
310
+ Netmera.updateAll(inboxStatus) { netmeraError ->
311
+ if (netmeraError != null) {
312
+ promise.reject(ERROR_CODE_UPDATE_STATUS, ERROR_MESSAGE_UPDATE_STATUS)
313
+ } else {
314
+ promise.resolve(true)
315
+ }
316
+ }
317
+ }
318
+
319
+ @ReactMethod
320
+ fun identifyUser(readableMap: ReadableMap, hasCallback: Boolean, promise: Promise) {
321
+ val userMap = toMap(readableMap)
322
+ val netmeraUser = NMUser()
323
+
324
+ if (userMap.containsKey(USER_ID)) {
325
+ netmeraUser.setUserId(userMap[USER_ID] as? String)
326
+ }
327
+ if (userMap.containsKey(EMAIL)) {
328
+ netmeraUser.setEmail(userMap[EMAIL] as? String)
329
+ }
330
+ if (userMap.containsKey(MSISDN)) {
331
+ netmeraUser.setMsisdn(userMap[MSISDN] as? String)
332
+ }
333
+ if (userMap.containsKey(WP_NUMBER)) {
334
+ netmeraUser.setWhatsAppNumber(userMap[WP_NUMBER] as? String)
335
+ }
336
+
337
+ if (hasCallback) {
338
+ Netmera.identifyUser(netmeraUser, object : NMUpdateUserListener {
339
+ override fun onSuccess() {
340
+ promise.resolve(null)
341
+ }
342
+
343
+ override fun onFailure(error: String?) {
344
+ promise.reject(ERROR_CODE_UPDATE_USER, ERROR_MESSAGE_UPDATE_USER + (error ?: ""))
345
+ }
346
+ })
347
+ } else {
348
+ Netmera.identifyUser(netmeraUser)
349
+ }
350
+ }
351
+
352
+ @ReactMethod
353
+ fun updateUserProfile(readableMap: ReadableMap, hasCallback: Boolean, promise: Promise) {
354
+ val userProfileMap = toMap(readableMap)
355
+
356
+ if (hasCallback) {
357
+ InternalNetmera.updateUserProfile(userProfileMap, object : NMUpdateUserProfileListener {
358
+ override fun onSuccess() {
359
+ promise.resolve(null)
360
+ }
361
+
362
+ override fun onFailure(error: String?) {
363
+ promise.reject(ERROR_CODE_UPDATE_PROFILE, ERROR_MESSAGE_UPDATE_PROFILE + (error ?: ""))
364
+ }
365
+ })
366
+ } else {
367
+ InternalNetmera.updateUserProfile(userProfileMap)
368
+ }
369
+ }
370
+
371
+ @ReactMethod
372
+ fun handlePushObject(pushId: String?) {
373
+ if (netmeraInbox == null) {
374
+ return
375
+ }
376
+
377
+ for (pushObject in netmeraInbox!!.pushObjects()) {
378
+ if (pushObject.pushId == pushId) {
379
+ Netmera.handlePushObject(reactApplicationContext.currentActivity!!, pushObject)
380
+ break
381
+ }
382
+ }
383
+ }
384
+
385
+ @ReactMethod
386
+ fun handleInteractiveAction(interactiveActionId: String?) {
387
+ if (netmeraInbox == null) {
388
+ return
389
+ }
390
+
391
+ for (pushObject in netmeraInbox!!.pushObjects()) {
392
+ if (pushObject.interactiveActions != null) {
393
+ for (action in pushObject.interactiveActions) {
394
+ if (action.id == interactiveActionId) {
395
+ Netmera.handleInteractiveAction(reactApplicationContext, action)
396
+ return
397
+ }
398
+ }
399
+ }
400
+ }
401
+ }
402
+
403
+ @ReactMethod
404
+ fun sendEvent(readableMap: ReadableMap?) {
405
+ val eventMap = toMap(readableMap).toMutableMap()
406
+ val event = RNNetmeraEvent()
407
+
408
+ if (eventMap.containsKey(CODE)) {
409
+ event.setCode(readableMap?.getString(CODE)!!)
410
+ eventMap.remove(CODE)
411
+ }
412
+
413
+ if (eventMap.containsKey(REVENUE)) {
414
+ event.setRevenue(readableMap?.getDouble(REVENUE) ?: 0.0)
415
+ eventMap.remove(REVENUE)
416
+ }
417
+
418
+ @Suppress("UNCHECKED_CAST")
419
+ event.setEventParameters(eventMap as MutableMap<String?, Any?>)
420
+ Netmera.sendEvent(event)
421
+ }
422
+
423
+ @ReactMethod
424
+ fun sendGenericEvent(code: String, attributes: ReadableMap?) {
425
+ val attrs = toMap(attributes)
426
+ .filterValues { it != null }
427
+ .mapValues { it.value!! }
428
+ Netmera.sendEvent(code, attrs)
429
+ }
430
+
431
+ @ReactMethod
432
+ fun getInboxCountForStatus(readableMap: ReadableMap, promise: Promise) {
433
+ val builder = NMInboxStatusCountFilter.Builder()
434
+
435
+ if (readableMap.hasKey(CATEGORY_LIST)) {
436
+ val categoryList = readableMap.toHashMap()[CATEGORY_LIST] as? ArrayList<Double>
437
+ categoryList?.let {
438
+ val categoryArray = Array(it.size) { i -> it[i].toInt() }
439
+ builder.setCategoryList(categoryArray)
440
+ }
441
+ }
442
+
443
+ if (readableMap.hasKey(STATUS)) {
444
+ builder.setInboxStatus(getInboxStatus(readableMap.getInt(STATUS)))
445
+ } else {
446
+ promise.reject(ERROR_CODE_NULL_INBOX_STATUS, ERROR_MESSAGE_NULL_INBOX_STATUS)
447
+ return
448
+ }
449
+
450
+ if (readableMap.hasKey(INCLUDE_EXPIRED_OBJECTS)) {
451
+ builder.setIncludeExpired(readableMap.getBoolean(INCLUDE_EXPIRED_OBJECTS))
452
+ }
453
+
454
+ val filter = builder.build()
455
+
456
+ Netmera.getInboxCountForStatus(filter, object : NMInboxCountResultListener {
457
+ override fun onSuccess(inboxStatusCount: NMInboxStatusCount) {
458
+ promise.resolve(parseInboxCountForStatusToMap(inboxStatusCount))
459
+ }
460
+
461
+ override fun onFailure(s: String?) {
462
+ promise.reject(ERROR_CODE_INBOX_STATUS, ERROR_MESSAGE_INBOX_STATUS)
463
+ }
464
+ })
465
+ }
466
+
467
+ @ReactMethod
468
+ fun getUserCategoryPreferenceList(promise: Promise) {
469
+ Netmera.getUserCategoryPreferenceList(object : NMCategoryPreferenceFetchCallback {
470
+ override fun onSuccess(list: MutableList<NMCategoryPreference>) {
471
+ promise.resolve(RNNetmeraUtil.parseUserCategoryPreferenceListToMap(list))
472
+ }
473
+
474
+ override fun onFailure(s: String?) {
475
+ promise.reject(ERROR_CODE_CATEGORY_PREFERENCE, ERROR_MESSAGE_CATEGORY_PREFERENCE)
476
+ }
477
+ })
478
+ }
479
+
480
+ @ReactMethod
481
+ fun setUserCategoryPreference(categoryId: Int, categoryEnabled: Boolean, promise: Promise) {
482
+ Netmera.setUserCategoryPreference(
483
+ categoryId,
484
+ categoryEnabled,
485
+ object : NMCategoryPreferenceSetCallback {
486
+ override fun onSuccess() {
487
+ promise.resolve(true)
488
+ }
489
+
490
+ override fun onFailure(s: String?) {
491
+ promise.reject(ERROR_CODE_SET_CATEGORY_PREFERENCE, ERROR_MESSAGE_SET_CATEGORY_PREFERENCE)
492
+ }
493
+ })
494
+ }
495
+
496
+ @ReactMethod
497
+ fun onNetmeraPushMessageReceived(map: ReadableMap) {
498
+ val data: MutableMap<String?, String?> = HashMap<String?, String?>()
499
+
500
+ val bundle = Bundle()
501
+ for (key in map.toHashMap().keys) {
502
+ data.put(key, map.getString(key))
503
+ bundle.putString(key, map.getString(key))
504
+ }
505
+
506
+ if (data.containsKey("google.c.sender.id")) {
507
+ Netmera.onNetmeraPushMessageReceived(RemoteMessage(bundle))
508
+ } else {
509
+ val builder = com.huawei.hms.push.RemoteMessage.Builder("to")
510
+ builder.setData(data)
511
+ Netmera.onNetmeraPushMessageReceived(builder.build())
512
+ }
513
+ }
514
+
515
+ @ReactMethod
516
+ fun onNetmeraNewToken(pushToken: String?) {
517
+ Netmera.onNetmeraNewToken(pushToken)
518
+ }
519
+
520
+ @ReactMethod
521
+ fun startDataTransfer() {
522
+ Netmera.startDataTransfer()
523
+ }
524
+
525
+ @ReactMethod
526
+ fun stopDataTransfer() {
527
+ Netmera.stopDataTransfer()
528
+ }
529
+
530
+ @ReactMethod
531
+ fun setEmailPermission(isAllowed: Boolean, promise: Promise) {
532
+ try {
533
+ Netmera.setEmailPermission(isAllowed)
534
+ promise.resolve(null)
535
+ } catch (e: Exception) {
536
+ promise.reject(ERROR_CODE_EMAIL_PERMISSION, ERROR_MESSAGE_EMAIL_PERMISSION)
537
+ }
538
+ }
539
+
540
+ @ReactMethod
541
+ fun getEmailPermission(promise: Promise) {
542
+ Netmera.getEmailPermission(object : NMPermissionResultListener {
543
+ override fun onSuccess(isAllowed: Boolean) {
544
+ promise.resolve(isAllowed)
545
+ }
546
+
547
+ override fun onFailure(error: String?) {
548
+ promise.reject(ERROR_CODE_EMAIL_PERMISSION, ERROR_MESSAGE_EMAIL_PERMISSION)
549
+ }
550
+ })
551
+ }
552
+
553
+ @ReactMethod
554
+ fun setSmsPermission(isAllowed: Boolean, promise: Promise) {
555
+ try {
556
+ Netmera.setSmsPermission(isAllowed)
557
+ promise.resolve(null)
558
+ } catch (e: Exception) {
559
+ promise.reject(ERROR_CODE_SMS_PERMISSION, ERROR_MESSAGE_SMS_PERMISSION)
560
+ }
561
+ }
562
+
563
+ @ReactMethod
564
+ fun getSmsPermission(promise: Promise) {
565
+ Netmera.getSmsPermission(object : NMPermissionResultListener {
566
+ override fun onSuccess(isAllowed: Boolean) {
567
+ promise.resolve(isAllowed)
568
+ }
569
+
570
+ override fun onFailure(error: String?) {
571
+ promise.reject(ERROR_CODE_SMS_PERMISSION, ERROR_MESSAGE_SMS_PERMISSION)
572
+ }
573
+ })
574
+ }
575
+
576
+ @ReactMethod
577
+ fun setWhatsAppPermission(isAllowed: Boolean, promise: Promise) {
578
+ try {
579
+ Netmera.setWhatsAppPermission(isAllowed)
580
+ promise.resolve(null)
581
+ } catch (e: Exception) {
582
+ promise.reject(ERROR_CODE_WHATSAPP_PERMISSION, ERROR_MESSAGE_WHATSAPP_PERMISSION)
583
+ }
584
+ }
585
+
586
+ @ReactMethod
587
+ fun getWhatsAppPermission(promise: Promise) {
588
+ Netmera.getWhatsAppPermission(object : NMPermissionResultListener {
589
+ override fun onSuccess(isAllowed: Boolean) {
590
+ promise.resolve(isAllowed)
591
+ }
592
+
593
+ override fun onFailure(error: String?) {
594
+ promise.reject(ERROR_CODE_WHATSAPP_PERMISSION, ERROR_MESSAGE_WHATSAPP_PERMISSION)
595
+ }
596
+ })
597
+ }
598
+
599
+ private fun setInbox(inbox: NetmeraInbox, netmeraError: NetmeraError?, promise: Promise) {
600
+ netmeraInbox = inbox
601
+ if (netmeraError != null) {
602
+ promise.reject(ERROR_CODE_NULL_INBOX, ERROR_MESSAGE_NULL_INBOX)
603
+ return
604
+ }
605
+ promise.resolve(mapPushObjects(inbox.pushObjects()))
606
+ }
607
+
608
+ private fun setCategory(
609
+ nmInboxCategory: NetmeraInboxCategory?,
610
+ netmeraError: NetmeraError?,
611
+ promise: Promise
612
+ ) {
613
+ if (netmeraError != null) {
614
+ promise.reject(ERROR_CODE_NULL_INBOX, ERROR_MESSAGE_NULL_INBOX)
615
+ return
616
+ }
617
+ netmeraInboxCategory = nmInboxCategory
618
+ promise.resolve(RNNetmeraCategoryObject.mapCategoryObjects(netmeraInboxCategory!!.categories()))
619
+ }
620
+
621
+ companion object {
622
+ const val NAME = "RNNetmera"
623
+
624
+ const val USER_ID: String = "userId"
625
+ const val EMAIL: String = "email"
626
+ const val MSISDN: String = "msisdn"
627
+ const val WP_NUMBER: String = "wpNumber"
628
+ const val CODE: String = "code"
629
+ const val CATEGORIES: String = "categories"
630
+ const val CATEGORY_LIST: String = "categoryList"
631
+ const val PAGE_SIZE: String = "pageSize"
632
+ const val REVENUE: String = "revenue"
633
+ const val INCLUDE_EXPIRED_OBJECTS: String = "includeExpiredObjects"
634
+ const val STATUS: String = "status"
635
+
636
+ const val ERROR_CODE_NULL_INBOX = "2017"
637
+ const val ERROR_MESSAGE_NULL_INBOX = "Must call fetchInbox method first"
638
+ const val ERROR_CODE_NOT_NEXT_PAGE = "2018"
639
+ const val ERROR_MESSAGE_NOT_NEXT_PAGE = "Not next page"
640
+ const val ERROR_CODE_UPDATE_STATUS = "2019"
641
+ const val ERROR_MESSAGE_UPDATE_STATUS = "There was a problem updating status"
642
+ const val ERROR_CODE_NULL_CATEGORY = "2020"
643
+ const val ERROR_MESSAGE_NULL_CATEGORY = "Must call fetchCategory method first"
644
+ const val ERROR_CODE_INVALID_PUSH_OBJECT = "2021"
645
+ const val ERROR_MESSAGE_INVALID_PUSH_OBJECT = "Received NetmeraPushObject was not valid."
646
+ const val ERROR_CODE_NULL_INBOX_STATUS = "2022"
647
+ const val ERROR_MESSAGE_NULL_INBOX_STATUS = "Inbox status can't be null."
648
+ const val ERROR_CODE_INBOX_STATUS = "2023"
649
+ const val ERROR_MESSAGE_INBOX_STATUS = "Error occurred while fetching inbox count for status."
650
+ const val ERROR_CODE_CATEGORY_PREFERENCE = "2024"
651
+ const val ERROR_MESSAGE_CATEGORY_PREFERENCE =
652
+ "Error occurred while fetching user category preference list."
653
+ const val ERROR_CODE_SET_CATEGORY_PREFERENCE = "2025"
654
+ const val ERROR_MESSAGE_SET_CATEGORY_PREFERENCE =
655
+ "Error occurred while setting user category preference list."
656
+ const val ERROR_CODE_COUPON_FETCH = "2026"
657
+ const val ERROR_MESSAGE_COUPON_FETCH = "Error occurred while fetching coupons."
658
+ const val ERROR_CODE_UPDATE_USER = "2027"
659
+ const val ERROR_MESSAGE_UPDATE_USER = "Error occurred while updating user. Reason: "
660
+ const val ERROR_CODE_UPDATE_PROFILE = "2028"
661
+ const val ERROR_MESSAGE_UPDATE_PROFILE = "Error occurred while updating user profile attributes. Reason: "
662
+ const val ERROR_CODE_EMAIL_PERMISSION = "2030"
663
+ const val ERROR_MESSAGE_EMAIL_PERMISSION = "Error occurred while getting/setting email permission."
664
+
665
+ const val ERROR_CODE_SMS_PERMISSION = "2031"
666
+ const val ERROR_MESSAGE_SMS_PERMISSION = "Error occurred while getting/setting SMS permission."
667
+
668
+ const val ERROR_CODE_WHATSAPP_PERMISSION = "2032"
669
+ const val ERROR_MESSAGE_WHATSAPP_PERMISSION = "Error occurred while getting/setting WhatsApp permission."
670
+
671
+ const val ERROR_CODE_INVALID_ACTIVITY = "2029"
672
+ const val ERROR_MESSAGE_INVALID_ACTIVITY = "Invalid argument: activity is null"
673
+
674
+ const val ERROR_CODE_NOTIFICATION_PERMISSION = "2033"
675
+ const val ERROR_MESSAGE_NOTIFICATION_PERMISSION =
676
+ "Error occurred while requesting notification permission. "
677
+
678
+ private lateinit var reactContext: ReactApplicationContext
679
+
680
+ fun emitEvent(eventName: String, eventData: String) {
681
+ reactContext
682
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
683
+ .emit(eventName, eventData)
684
+ }
685
+
686
+ private fun hasKey(map: MutableMap<*, *>, key: String?): Boolean {
687
+ return map.containsKey(key) && map[key] != null
688
+ }
689
+
690
+ private fun hasKey(map: ReadableMap, key: String): Boolean {
691
+ return map.hasKey(key) && !map.isNull(key)
692
+ }
693
+ }
694
+ }