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,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,8 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
3
+
4
+ @interface RCT_EXTERN_MODULE(RNNetmeraRCTEventEmitter, RCTEventEmitter)
5
+
6
+ RCT_EXTERN_METHOD(supportedEvents)
7
+
8
+ @end
@@ -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
+ }