@snowplow/react-native-tracker 2.1.2 → 4.0.2-dev.1

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 (273) hide show
  1. package/LICENSE +29 -203
  2. package/README.md +59 -143
  3. package/dist/commonjs/event_store.js +150 -0
  4. package/dist/commonjs/event_store.js.map +1 -0
  5. package/dist/commonjs/events.js +42 -0
  6. package/dist/commonjs/events.js.map +1 -0
  7. package/dist/commonjs/index.js +29 -0
  8. package/dist/commonjs/index.js.map +1 -0
  9. package/dist/commonjs/subject.js +82 -0
  10. package/dist/commonjs/subject.js.map +1 -0
  11. package/dist/commonjs/tracker.js +77 -0
  12. package/dist/commonjs/tracker.js.map +1 -0
  13. package/dist/commonjs/types.js +223 -0
  14. package/dist/commonjs/types.js.map +1 -0
  15. package/dist/module/event_store.js +145 -0
  16. package/dist/module/event_store.js.map +1 -0
  17. package/dist/module/events.js +38 -0
  18. package/dist/module/events.js.map +1 -0
  19. package/dist/module/index.js +7 -0
  20. package/dist/module/index.js.map +1 -0
  21. package/dist/module/subject.js +78 -0
  22. package/dist/module/subject.js.map +1 -0
  23. package/dist/module/tracker.js +74 -0
  24. package/dist/module/tracker.js.map +1 -0
  25. package/dist/module/types.js +73 -0
  26. package/dist/module/types.js.map +1 -0
  27. package/dist/typescript/commonjs/package.json +1 -0
  28. package/dist/typescript/commonjs/src/event_store.d.ts +4 -0
  29. package/dist/typescript/commonjs/src/event_store.d.ts.map +1 -0
  30. package/dist/typescript/commonjs/src/events.d.ts +10 -0
  31. package/dist/typescript/commonjs/src/events.d.ts.map +1 -0
  32. package/dist/typescript/commonjs/src/index.d.ts +4 -0
  33. package/dist/typescript/commonjs/src/index.d.ts.map +1 -0
  34. package/dist/typescript/commonjs/src/subject.d.ts +19 -0
  35. package/dist/typescript/commonjs/src/subject.d.ts.map +1 -0
  36. package/dist/typescript/commonjs/src/tracker.d.ts +9 -0
  37. package/dist/typescript/commonjs/src/tracker.d.ts.map +1 -0
  38. package/dist/typescript/commonjs/src/types.d.ts +452 -0
  39. package/dist/typescript/commonjs/src/types.d.ts.map +1 -0
  40. package/dist/typescript/module/package.json +1 -0
  41. package/dist/typescript/module/src/event_store.d.ts +4 -0
  42. package/dist/typescript/module/src/event_store.d.ts.map +1 -0
  43. package/dist/typescript/module/src/events.d.ts +10 -0
  44. package/dist/typescript/module/src/events.d.ts.map +1 -0
  45. package/dist/typescript/module/src/index.d.ts +4 -0
  46. package/dist/typescript/module/src/index.d.ts.map +1 -0
  47. package/dist/typescript/module/src/subject.d.ts +19 -0
  48. package/dist/typescript/module/src/subject.d.ts.map +1 -0
  49. package/dist/typescript/module/src/tracker.d.ts +9 -0
  50. package/dist/typescript/module/src/tracker.d.ts.map +1 -0
  51. package/dist/typescript/module/src/types.d.ts +452 -0
  52. package/dist/typescript/module/src/types.d.ts.map +1 -0
  53. package/package.json +75 -147
  54. package/.editorconfig +0 -15
  55. package/.eslintignore +0 -6
  56. package/.gitattributes +0 -3
  57. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -29
  58. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  59. package/.github/actions/setup/action.yml +0 -28
  60. package/.github/workflows/build.yml +0 -155
  61. package/.github/workflows/deploy.yml +0 -97
  62. package/.github/workflows/e2e-android.yml +0 -121
  63. package/.github/workflows/e2e-ios.yml +0 -95
  64. package/.github/workflows/snyk.yml +0 -21
  65. package/.gitignore +0 -70
  66. package/.npmignore +0 -60
  67. package/.nvmrc +0 -1
  68. package/.watchmanconfig +0 -1
  69. package/.yarnrc +0 -3
  70. package/CHANGELOG +0 -184
  71. package/CONTRIBUTING.md +0 -80
  72. package/android/build.gradle +0 -110
  73. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  74. package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  75. package/android/gradle.properties +0 -5
  76. package/android/gradlew +0 -234
  77. package/android/gradlew.bat +0 -89
  78. package/android/src/main/AndroidManifest.xml +0 -3
  79. package/android/src/main/AndroidManifestNew.xml +0 -2
  80. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerModule.kt +0 -744
  81. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerPackage.kt +0 -17
  82. package/android/src/main/java/com/snowplow/reactnativetracker/util/ConfigUtil.kt +0 -274
  83. package/android/src/main/java/com/snowplow/reactnativetracker/util/EventUtil.kt +0 -233
  84. package/android/src/main/java/com/snowplow/reactnativetracker/util/TrackerVersion.kt +0 -5
  85. package/babel.config.js +0 -3
  86. package/example/.watchmanconfig +0 -1
  87. package/example/Gemfile +0 -6
  88. package/example/android/app/build.gradle +0 -129
  89. package/example/android/app/debug.keystore +0 -0
  90. package/example/android/app/proguard-rules.pro +0 -10
  91. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTest.java +0 -36
  92. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTestAppJUnitRunner.java +0 -21
  93. package/example/android/app/src/debug/AndroidManifest.xml +0 -13
  94. package/example/android/app/src/debug/java/com/reactnativetrackerexample/ReactNativeFlipper.java +0 -75
  95. package/example/android/app/src/main/AndroidManifest.xml +0 -26
  96. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainActivity.java +0 -32
  97. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainApplication.java +0 -62
  98. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -36
  99. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  100. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  101. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  102. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  103. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  104. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  105. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  106. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  107. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  108. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  109. package/example/android/app/src/main/res/values/strings.xml +0 -3
  110. package/example/android/app/src/main/res/values/styles.xml +0 -9
  111. package/example/android/app/src/release/java/com/reactnativetrackerexample/ReactNativeFlipper.java +0 -20
  112. package/example/android/build.gradle +0 -31
  113. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  114. package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  115. package/example/android/gradle.properties +0 -44
  116. package/example/android/gradlew +0 -244
  117. package/example/android/gradlew.bat +0 -92
  118. package/example/android/settings.gradle +0 -4
  119. package/example/app.json +0 -4
  120. package/example/babel.config.js +0 -17
  121. package/example/detox.config.js +0 -92
  122. package/example/e2e/config.json +0 -10
  123. package/example/e2e/emitEvents.e2e.detox.js +0 -95
  124. package/example/e2e/environment.js +0 -23
  125. package/example/e2e/helpers/microCommands.js +0 -140
  126. package/example/e2e/helpers/microHelpers.js +0 -333
  127. package/example/e2e/helpers/microHelpers.test.js +0 -295
  128. package/example/e2e/helpers/schemas.js +0 -49
  129. package/example/e2e/jest.config.js +0 -16
  130. package/example/e2e/setup.js +0 -4
  131. package/example/e2e/testEvents.micro.test.js +0 -287
  132. package/example/index.js +0 -5
  133. package/example/ios/.xcode.env +0 -11
  134. package/example/ios/Podfile +0 -62
  135. package/example/ios/Podfile.lock +0 -730
  136. package/example/ios/ReactNativeTrackerExample/AppDelegate.h +0 -6
  137. package/example/ios/ReactNativeTrackerExample/AppDelegate.mm +0 -26
  138. package/example/ios/ReactNativeTrackerExample/Images.xcassets/AppIcon.appiconset/Contents.json +0 -53
  139. package/example/ios/ReactNativeTrackerExample/Images.xcassets/Contents.json +0 -6
  140. package/example/ios/ReactNativeTrackerExample/Info.plist +0 -55
  141. package/example/ios/ReactNativeTrackerExample/LaunchScreen.storyboard +0 -47
  142. package/example/ios/ReactNativeTrackerExample/PrivacyInfo.xcprivacy +0 -37
  143. package/example/ios/ReactNativeTrackerExample/main.m +0 -10
  144. package/example/ios/ReactNativeTrackerExample-Bridging-Header.h +0 -3
  145. package/example/ios/ReactNativeTrackerExample.xcodeproj/project.pbxproj +0 -739
  146. package/example/ios/ReactNativeTrackerExample.xcodeproj/xcshareddata/xcschemes/ReactNativeTrackerExample.xcscheme +0 -88
  147. package/example/ios/ReactNativeTrackerExample.xcworkspace/contents.xcworkspacedata +0 -10
  148. package/example/ios/ReactNativeTrackerExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  149. package/example/ios/ReactNativeTrackerExampleTests/Info.plist +0 -24
  150. package/example/ios/ReactNativeTrackerExampleTests/ReactNativeTrackerExampleTests.m +0 -66
  151. package/example/metro.config.js +0 -45
  152. package/example/package.json +0 -54
  153. package/example/react-native.config.js +0 -10
  154. package/example/src/App.js +0 -566
  155. package/example/tsconfig.json +0 -5
  156. package/example/yarn.lock +0 -7703
  157. package/ios/ReactNativeTracker-Bridging-Header.h +0 -2
  158. package/ios/ReactNativeTracker.mm +0 -171
  159. package/ios/ReactNativeTracker.swift +0 -822
  160. package/ios/ReactNativeTracker.xcodeproj/project.pbxproj +0 -301
  161. package/ios/Util/ConfigUtils.swift +0 -209
  162. package/ios/Util/TrackerVersion.swift +0 -3
  163. package/ios/Util/Utilities.swift +0 -37
  164. package/lefthook.yml +0 -11
  165. package/lib/commonjs/api.js +0 -490
  166. package/lib/commonjs/api.js.map +0 -1
  167. package/lib/commonjs/configurations.js +0 -196
  168. package/lib/commonjs/configurations.js.map +0 -1
  169. package/lib/commonjs/constants.js +0 -77
  170. package/lib/commonjs/constants.js.map +0 -1
  171. package/lib/commonjs/events.js +0 -277
  172. package/lib/commonjs/events.js.map +0 -1
  173. package/lib/commonjs/index.js +0 -132
  174. package/lib/commonjs/index.js.map +0 -1
  175. package/lib/commonjs/jsCore.js +0 -427
  176. package/lib/commonjs/jsCore.js.map +0 -1
  177. package/lib/commonjs/native.js +0 -16
  178. package/lib/commonjs/native.js.map +0 -1
  179. package/lib/commonjs/subject.js +0 -235
  180. package/lib/commonjs/subject.js.map +0 -1
  181. package/lib/commonjs/tracker.js +0 -248
  182. package/lib/commonjs/tracker.js.map +0 -1
  183. package/lib/commonjs/types.js +0 -2
  184. package/lib/commonjs/types.js.map +0 -1
  185. package/lib/commonjs/utils.js +0 -72
  186. package/lib/commonjs/utils.js.map +0 -1
  187. package/lib/commonjs/webViewInterface.js +0 -66
  188. package/lib/commonjs/webViewInterface.js.map +0 -1
  189. package/lib/module/api.js +0 -452
  190. package/lib/module/api.js.map +0 -1
  191. package/lib/module/configurations.js +0 -184
  192. package/lib/module/configurations.js.map +0 -1
  193. package/lib/module/constants.js +0 -72
  194. package/lib/module/constants.js.map +0 -1
  195. package/lib/module/events.js +0 -259
  196. package/lib/module/events.js.map +0 -1
  197. package/lib/module/index.js +0 -120
  198. package/lib/module/index.js.map +0 -1
  199. package/lib/module/jsCore.js +0 -424
  200. package/lib/module/jsCore.js.map +0 -1
  201. package/lib/module/native.js +0 -12
  202. package/lib/module/native.js.map +0 -1
  203. package/lib/module/subject.js +0 -222
  204. package/lib/module/subject.js.map +0 -1
  205. package/lib/module/tracker.js +0 -234
  206. package/lib/module/tracker.js.map +0 -1
  207. package/lib/module/types.js +0 -2
  208. package/lib/module/types.js.map +0 -1
  209. package/lib/module/utils.js +0 -66
  210. package/lib/module/utils.js.map +0 -1
  211. package/lib/module/webViewInterface.js +0 -62
  212. package/lib/module/webViewInterface.js.map +0 -1
  213. package/lib/typescript/__tests__/api.test.d.ts +0 -2
  214. package/lib/typescript/__tests__/api.test.d.ts.map +0 -1
  215. package/lib/typescript/__tests__/configurations.test.d.ts +0 -2
  216. package/lib/typescript/__tests__/configurations.test.d.ts.map +0 -1
  217. package/lib/typescript/__tests__/events.test.d.ts +0 -2
  218. package/lib/typescript/__tests__/events.test.d.ts.map +0 -1
  219. package/lib/typescript/__tests__/index.test.d.ts +0 -2
  220. package/lib/typescript/__tests__/index.test.d.ts.map +0 -1
  221. package/lib/typescript/__tests__/jsCore.test.d.ts +0 -2
  222. package/lib/typescript/__tests__/jsCore.test.d.ts.map +0 -1
  223. package/lib/typescript/__tests__/utils.test.d.ts +0 -2
  224. package/lib/typescript/__tests__/utils.test.d.ts.map +0 -1
  225. package/lib/typescript/api.d.ts +0 -240
  226. package/lib/typescript/api.d.ts.map +0 -1
  227. package/lib/typescript/configurations.d.ts +0 -73
  228. package/lib/typescript/configurations.d.ts.map +0 -1
  229. package/lib/typescript/constants.d.ts +0 -64
  230. package/lib/typescript/constants.d.ts.map +0 -1
  231. package/lib/typescript/events.d.ts +0 -115
  232. package/lib/typescript/events.d.ts.map +0 -1
  233. package/lib/typescript/index.d.ts +0 -27
  234. package/lib/typescript/index.d.ts.map +0 -1
  235. package/lib/typescript/jsCore.d.ts +0 -152
  236. package/lib/typescript/jsCore.d.ts.map +0 -1
  237. package/lib/typescript/native.d.ts +0 -4
  238. package/lib/typescript/native.d.ts.map +0 -1
  239. package/lib/typescript/subject.d.ts +0 -91
  240. package/lib/typescript/subject.d.ts.map +0 -1
  241. package/lib/typescript/tracker.d.ts +0 -111
  242. package/lib/typescript/tracker.d.ts.map +0 -1
  243. package/lib/typescript/types.d.ts +0 -981
  244. package/lib/typescript/types.d.ts.map +0 -1
  245. package/lib/typescript/utils.d.ts +0 -35
  246. package/lib/typescript/utils.d.ts.map +0 -1
  247. package/lib/typescript/webViewInterface.d.ts +0 -15
  248. package/lib/typescript/webViewInterface.d.ts.map +0 -1
  249. package/scripts/bootstrap.js +0 -29
  250. package/snowplow-react-native-tracker.podspec +0 -42
  251. package/src/__mocks__/react-native.js +0 -7
  252. package/src/__tests__/api.test.ts +0 -21
  253. package/src/__tests__/configurations.test.ts +0 -608
  254. package/src/__tests__/events.test.ts +0 -736
  255. package/src/__tests__/index.test.ts +0 -14
  256. package/src/__tests__/jsCore.test.ts +0 -199
  257. package/src/__tests__/utils.test.ts +0 -10
  258. package/src/api.ts +0 -556
  259. package/src/configurations.ts +0 -325
  260. package/src/constants.ts +0 -97
  261. package/src/events.ts +0 -355
  262. package/src/index.ts +0 -184
  263. package/src/jsCore.ts +0 -603
  264. package/src/native.ts +0 -21
  265. package/src/subject.ts +0 -302
  266. package/src/tracker.ts +0 -377
  267. package/src/types.ts +0 -1162
  268. package/src/utils.ts +0 -65
  269. package/src/webViewInterface.ts +0 -92
  270. package/tsconfig.build.json +0 -5
  271. package/tsconfig.json +0 -28
  272. package/turbo.json +0 -34
  273. package/yarn.lock +0 -9398
@@ -1,822 +0,0 @@
1
- import SnowplowTracker
2
-
3
- @objc(ReactNativeTracker)
4
- class ReactNativeTracker: NSObject {
5
-
6
- @objc(createTracker:resolver:rejecter:)
7
- func createTracker(argmap:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
8
-
9
- let trackerNs = argmap.object(forKey: "namespace") as! String
10
- let networkConfig = argmap.object(forKey: "networkConfig") as! NSDictionary
11
-
12
- // NetworkConfiguration
13
- let method = networkConfig.object(forKey: "method") as? String
14
- let httpMethod: HttpMethodOptions = method == "get" ? .get : .post
15
- let endpoint = networkConfig.object(forKey: "endpoint") as! String
16
- let networkConfiguration = NetworkConfiguration(endpoint: endpoint, method: httpMethod)
17
- if let customPostPath = networkConfig.object(forKey: "customPostPath") as? String {
18
- networkConfiguration.customPostPath = customPostPath
19
- }
20
- if let requestHeaders = networkConfig.object(forKey: "requestHeaders") as? Dictionary<String, String> {
21
- networkConfiguration.requestHeaders = requestHeaders
22
- }
23
-
24
- // Configurations
25
- var controllers: [ConfigurationProtocol] = []
26
-
27
- // TrackerConfiguration
28
- let trackerConfiguration = ConfigUtils.mkTrackerConfig(argmap.object(forKey: "trackerConfig") as? NSDictionary ?? NSDictionary())
29
- controllers.append(trackerConfiguration)
30
-
31
- // SessionConfiguration
32
- if let sessionArg = argmap.object(forKey: "sessionConfig") as? NSDictionary,
33
- let sessionConfiguration = ConfigUtils.mkSessionConfig(sessionArg) {
34
- controllers.append(sessionConfiguration)
35
- }
36
-
37
- // EmitterConfiguration
38
- if let emitterArg = argmap.object(forKey: "emitterConfig") as? NSDictionary,
39
- let emitterConfiguration = ConfigUtils.mkEmitterConfig(emitterArg) {
40
- controllers.append(emitterConfiguration)
41
- }
42
-
43
- // SubjectConfiguration
44
- if let subjectArg = argmap.object(forKey: "subjectConfig") as? NSDictionary,
45
- let subjectConfiguration = ConfigUtils.mkSubjectConfig(subjectArg) {
46
- controllers.append(subjectConfiguration)
47
- }
48
-
49
- // GdprConfiguration
50
- if let gdprArg = argmap.object(forKey: "gdprConfig") as? NSDictionary,
51
- let gdprConfiguration = ConfigUtils.mkGdprConfig(gdprArg) {
52
- controllers.append(gdprConfiguration)
53
- }
54
-
55
- // GConfiguration
56
- if let gcArg = argmap.object(forKey: "gcConfig") as? NSArray,
57
- let gcConfiguration = ConfigUtils.mkGCConfig(gcArg) {
58
- controllers.append(gcConfiguration)
59
- }
60
-
61
- _ = Snowplow.createTracker(namespace: trackerNs, network: networkConfiguration, configurations: controllers)
62
- resolve(true)
63
- }
64
-
65
- @objc(removeTracker:resolver:rejecter:)
66
- func removeTracker(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
67
- let namespace = details.object(forKey: "tracker") as? String
68
- let trackerController = trackerByNamespace(namespace)
69
- let removed = Snowplow.remove(tracker: trackerController)
70
- resolve(removed);
71
- }
72
-
73
- @objc(removeAllTrackers:rejecter:)
74
- func removeAllTrackers(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
75
- Snowplow.removeAllTrackers()
76
- resolve(true)
77
- }
78
-
79
- @objc(trackSelfDescribingEvent:resolver:rejecter:)
80
- func trackSelfDescribingEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
81
-
82
- let namespace = details.object(forKey: "tracker") as? String
83
- if let trackerController = trackerByNamespace(namespace),
84
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
85
- let schema = argmap.object(forKey: "schema") as? String,
86
- let data = argmap.object(forKey: "data") as? Dictionary<String, Any> {
87
-
88
- let eventData = SelfDescribingJson(
89
- schema: schema,
90
- andDictionary: data
91
- )
92
-
93
- let event = SelfDescribing(eventData: eventData)
94
- if let contexts = details.object(forKey: "contexts") as? NSArray {
95
- event.entities = Utilities.mkSDJArray(contexts)
96
- }
97
-
98
- _ = trackerController.track(event)
99
- resolve(true);
100
- } else {
101
- let error = NSError(domain: "SnowplowTracker", code: 200)
102
- reject("ERROR", "tracker with given namespace not found", error);
103
- }
104
- }
105
-
106
- @objc(trackStructuredEvent:resolver:rejecter:)
107
- func trackStructuredEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
108
-
109
- let namespace = details.object(forKey: "tracker") as? String
110
- if let trackerController = trackerByNamespace(namespace),
111
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
112
- let category = argmap.object(forKey: "category") as? String,
113
- let action = argmap.object(forKey: "action") as? String {
114
- let event = Structured(category: category, action: action)
115
-
116
- if let label = argmap.object(forKey: "label") as? String {
117
- event.label = label
118
- }
119
- if let property = argmap.object(forKey: "property") as? String {
120
- event.property = property
121
- }
122
- if let value = argmap.object(forKey: "value") as? NSNumber {
123
- event.value = value
124
- }
125
-
126
- if let contexts = details.object(forKey: "contexts") as? NSArray {
127
- event.entities = Utilities.mkSDJArray(contexts)
128
- }
129
- _ = trackerController.track(event)
130
- resolve(true)
131
- } else {
132
- let error = NSError(domain: "SnowplowTracker", code: 200)
133
- reject("ERROR", "tracker with given namespace not found", error)
134
- }
135
- }
136
-
137
- @objc(trackScreenViewEvent:resolver:rejecter:)
138
- func trackScreenViewEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
139
-
140
- let namespace = details.object(forKey: "tracker") as? String
141
- if let trackerController = trackerByNamespace(namespace),
142
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
143
- let screenName = argmap.object(forKey: "name") as? String {
144
-
145
- var screenUuid: UUID?
146
- if let screenId = argmap.object(forKey: "id") as? String {
147
- screenUuid = UUID(uuidString: screenId)
148
- if screenUuid == nil {
149
- let error = NSError(domain: "SnowplowTracker", code: 200)
150
- reject("ERROR", "screenId has to be a valid UUID string", error)
151
- return
152
- }
153
- }
154
-
155
- let event = ScreenView(name: screenName, screenId: screenUuid)
156
-
157
- if let type = argmap.object(forKey: "type") as? String {
158
- event.type = type
159
- }
160
- if let previousName = argmap.object(forKey: "previousName") as? String {
161
- event.previousName = previousName;
162
- }
163
- if let previousId = argmap.object(forKey: "previousId") as? String {
164
- event.previousId = previousId
165
- }
166
- if let previousType = argmap.object(forKey: "previousType") as? String {
167
- event.previousType = previousType
168
- }
169
- if let transitionType = argmap.object(forKey: "transitionType") as? String {
170
- event.transitionType = transitionType
171
- }
172
-
173
- if let contexts = details.object(forKey: "contexts") as? NSArray {
174
- event.entities = Utilities.mkSDJArray(contexts)
175
- }
176
- _ = trackerController.track(event)
177
- resolve(true)
178
- } else {
179
- let error = NSError(domain: "SnowplowTracker", code: 200)
180
- reject("ERROR", "tracker with given namespace not found", error)
181
- }
182
- }
183
-
184
- @objc(trackScrollChangedEvent:resolver:rejecter:)
185
- func trackScrollChangedEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
186
-
187
- let namespace = details.object(forKey: "tracker") as? String
188
- if let trackerController = trackerByNamespace(namespace),
189
- let argmap = details.object(forKey: "eventData") as? NSDictionary {
190
-
191
- let event = ScrollChanged()
192
-
193
- if let contentHeight = argmap.object(forKey: "contentHeight") as? NSNumber {
194
- event.contentHeight = contentHeight.intValue
195
- }
196
- if let contentWidth = argmap.object(forKey: "contentWidth") as? NSNumber {
197
- event.contentWidth = contentWidth.intValue
198
- }
199
- if let viewWidth = argmap.object(forKey: "viewWidth") as? NSNumber {
200
- event.viewWidth = viewWidth.intValue
201
- }
202
- if let viewHeight = argmap.object(forKey: "viewHeight") as? NSNumber {
203
- event.viewHeight = viewHeight.intValue
204
- }
205
- if let xOffset = argmap.object(forKey: "xOffset") as? NSNumber {
206
- event.xOffset = xOffset.intValue
207
- }
208
- if let yOffset = argmap.object(forKey: "yOffset") as? NSNumber {
209
- event.yOffset = yOffset.intValue
210
- }
211
-
212
- if let contexts = details.object(forKey: "contexts") as? NSArray {
213
- event.entities = Utilities.mkSDJArray(contexts)
214
- }
215
- _ = trackerController.track(event)
216
- resolve(true)
217
- } else {
218
- let error = NSError(domain: "SnowplowTracker", code: 200)
219
- reject("ERROR", "tracker with given namespace not found", error)
220
- }
221
- }
222
-
223
- @objc(trackListItemViewEvent:resolver:rejecter:)
224
- func trackListItemViewEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
225
-
226
- let namespace = details.object(forKey: "tracker") as? String
227
- if let trackerController = trackerByNamespace(namespace),
228
- let argmap = details.object(forKey: "eventData") as? NSDictionary {
229
-
230
- if let index = argmap.object(forKey: "index") as? NSNumber {
231
- let event = ListItemView(index: index.intValue)
232
-
233
- if let itemsCount = argmap.object(forKey: "itemsCount") as? NSNumber {
234
- event.itemsCount = itemsCount.intValue
235
- }
236
-
237
- if let contexts = details.object(forKey: "contexts") as? NSArray {
238
- event.entities = Utilities.mkSDJArray(contexts)
239
- }
240
- _ = trackerController.track(event)
241
- resolve(true)
242
- } else {
243
- let error = NSError(domain: "SnowplowTracker", code: 200)
244
- reject("ERROR", "index has to be a valid integer", error)
245
- return
246
- }
247
- } else {
248
- let error = NSError(domain: "SnowplowTracker", code: 200)
249
- reject("ERROR", "tracker with given namespace not found", error)
250
- }
251
- }
252
-
253
- @objc(trackPageViewEvent:resolver:rejecter:)
254
- func trackPageViewEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
255
- let namespace = details.object(forKey: "tracker") as? String
256
- if let trackerController = trackerByNamespace(namespace),
257
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
258
- let pageUrl = argmap.object(forKey: "pageUrl") as? String {
259
- let event = PageView(pageUrl: pageUrl)
260
-
261
- if let pageTitle = argmap.object(forKey: "pageTitle") as? String {
262
- event.pageTitle = pageTitle
263
- }
264
- if let referrer = argmap.object(forKey: "referrer") as? String {
265
- event.referrer = referrer
266
- }
267
-
268
- if let contexts = details.object(forKey: "contexts") as? NSArray {
269
- event.entities = Utilities.mkSDJArray(contexts)
270
- }
271
- _ = trackerController.track(event)
272
- resolve(true)
273
- } else {
274
- let error = NSError(domain: "SnowplowTracker", code: 200)
275
- reject("ERROR", "tracker with given namespace not found", error)
276
- }
277
- }
278
-
279
- @objc(trackTimingEvent:resolver:rejecter:)
280
- func trackTimingEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
281
- let namespace = details.object(forKey: "tracker") as? String
282
- if let trackerController = trackerByNamespace(namespace),
283
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
284
- let category = argmap.object(forKey: "category") as? String,
285
- let variable = argmap.object(forKey: "variable") as? String,
286
- let timing = argmap.object(forKey: "timing") as? NSNumber {
287
- let event = Timing(category: category, variable: variable, timing: timing.intValue)
288
-
289
- if let label = argmap.object(forKey: "label") as? String {
290
- event.label = label
291
- }
292
-
293
- if let contexts = details.object(forKey: "contexts") as? NSArray {
294
- event.entities = Utilities.mkSDJArray(contexts)
295
- }
296
- _ = trackerController.track(event)
297
- resolve(true)
298
- } else {
299
- let error = NSError(domain: "SnowplowTracker", code: 200)
300
- reject("ERROR", "tracker with given namespace not found", error)
301
- }
302
- }
303
-
304
- @objc(trackConsentGrantedEvent:resolver:rejecter:)
305
- func trackConsentGrantedEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
306
-
307
- let namespace = details.object(forKey: "tracker") as? String
308
- if let trackerController = trackerByNamespace(namespace),
309
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
310
- let expiry = argmap.object(forKey: "expiry") as? String,
311
- let documentId = argmap.object(forKey: "documentId") as? String,
312
- let version = argmap.object(forKey: "version") as? String {
313
-
314
- let event = ConsentGranted(expiry: expiry, documentId: documentId, version: version)
315
-
316
- if let name = argmap.object(forKey: "name") as? String {
317
- event.name = name;
318
- }
319
- if let documentDescription = argmap.object(forKey: "documentDescription") as? String {
320
- event.documentDescription = documentDescription;
321
- }
322
-
323
- if let contexts = details.object(forKey: "contexts") as? NSArray {
324
- event.entities = Utilities.mkSDJArray(contexts)
325
- }
326
- _ = trackerController.track(event)
327
- resolve(true)
328
- } else {
329
- let error = NSError(domain: "SnowplowTracker", code: 200)
330
- reject("ERROR", "tracker with given namespace not found", error)
331
- }
332
- }
333
-
334
- @objc(trackConsentWithdrawnEvent:resolver:rejecter:)
335
- func trackConsentWithdrawnEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
336
-
337
- let namespace = details.object(forKey: "tracker") as? String
338
- if let trackerController = trackerByNamespace(namespace),
339
- let argmap = details.object(forKey: "eventData") as? NSDictionary {
340
-
341
- let event = ConsentWithdrawn()
342
-
343
- if let all = argmap.object(forKey: "all") as? NSNumber {
344
- event.all = all.boolValue
345
- }
346
- if let documentId = argmap.object(forKey: "documentId") as? String {
347
- event.documentId = documentId
348
- }
349
- if let version = argmap.object(forKey: "version") as? String {
350
- event.version = version
351
- }
352
- if let name = argmap.object(forKey: "name") as? String {
353
- event.name = name
354
- }
355
- if let documentDescription = argmap.object(forKey: "documentDescription") as? String {
356
- event.documentDescription = documentDescription
357
- }
358
-
359
- if let contexts = details.object(forKey: "contexts") as? NSArray {
360
- event.entities = Utilities.mkSDJArray(contexts)
361
- }
362
- _ = trackerController.track(event)
363
- resolve(true)
364
- } else {
365
- let error = NSError(domain: "SnowplowTracker", code: 200)
366
- reject("ERROR", "tracker with given namespace not found", error)
367
- }
368
- }
369
-
370
- @objc(trackEcommerceTransactionEvent:resolver:rejecter:)
371
- func trackEcommerceTransactionEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
372
- let namespace = details.object(forKey: "tracker") as? String
373
- if let trackerController = trackerByNamespace(namespace),
374
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
375
- let orderId = argmap.object(forKey: "orderId") as? String,
376
- let totalValue = argmap.object(forKey: "totalValue") as? NSNumber {
377
- var transItems: [EcommerceItem] = []
378
- if let items = argmap.object(forKey: "items") as? NSArray {
379
- for item in items {
380
- if let item = item as? NSDictionary,
381
- let sku = item.object(forKey: "sku") as? String,
382
- let price = item.object(forKey: "price") as? NSNumber,
383
- let quantity = item.object(forKey: "quantity") as? NSNumber {
384
- let ecomItem = EcommerceItem(sku: sku, price: price.doubleValue, quantity: quantity.intValue)
385
- if let name = argmap.object(forKey: "name") as? String {
386
- ecomItem.name = name
387
- }
388
- if let category = argmap.object(forKey: "category") as? String {
389
- ecomItem.category = category
390
- }
391
- if let currency = argmap.object(forKey: "currency") as? String {
392
- ecomItem.currency = currency;
393
- }
394
-
395
- transItems.append(ecomItem)
396
- }
397
- }
398
- }
399
-
400
- let event = Ecommerce(orderId: orderId, totalValue: totalValue.doubleValue, items: transItems)
401
-
402
- if let contexts = details.object(forKey: "contexts") as? NSArray {
403
- event.entities = Utilities.mkSDJArray(contexts)
404
- }
405
- _ = trackerController.track(event)
406
- resolve(true)
407
- } else {
408
- let error = NSError(domain: "SnowplowTracker", code: 200)
409
- reject("ERROR", "tracker with given namespace not found", error)
410
- }
411
- }
412
-
413
- @objc(trackDeepLinkReceivedEvent:resolver:rejecter:)
414
- func trackDeepLinkReceivedEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
415
-
416
- let namespace = details.object(forKey: "tracker") as? String
417
- if let trackerController = trackerByNamespace(namespace),
418
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
419
- let url = argmap.object(forKey: "url") as? String {
420
- let event = DeepLinkReceived(url: url)
421
-
422
- if let referrer = argmap.object(forKey: "referrer") as? String {
423
- event.referrer = referrer
424
- }
425
-
426
- if let contexts = details.object(forKey: "contexts") as? NSArray {
427
- event.entities = Utilities.mkSDJArray(contexts)
428
- }
429
- _ = trackerController.track(event)
430
- resolve(true)
431
- } else {
432
- let error = NSError(domain: "SnowplowTracker", code: 200)
433
- reject("ERROR", "tracker with given namespace not found", error)
434
- }
435
- }
436
-
437
- @objc(trackMessageNotificationEvent:resolver:rejecter:)
438
- func trackMessageNotificationEvent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
439
-
440
- let namespace = details.object(forKey: "tracker") as? String
441
- if let trackerController = trackerByNamespace(namespace),
442
- let argmap = details.object(forKey: "eventData") as? NSDictionary,
443
- let title = argmap.object(forKey: "title") as? String,
444
- let body = argmap.object(forKey: "body") as? String {
445
- let triggerStr = argmap.object(forKey: "trigger") as? String
446
- var trigger: MessageNotificationTrigger = .other
447
-
448
- if triggerStr == "push" {
449
- trigger = .push
450
- } else if triggerStr == "location" {
451
- trigger = .location
452
- } else if triggerStr == "calendar" {
453
- trigger = .calendar
454
- } else if triggerStr == "timeInterval" {
455
- trigger = .timeInterval
456
- }
457
- let event = MessageNotification(title: title, body: body, trigger: trigger)
458
-
459
- if let action = argmap.object(forKey: "action") as? String {
460
- event.action = action
461
- }
462
- if let attachmentsMap = argmap.object(forKey: "attachments") as? NSArray {
463
- var attachments: [MessageNotificationAttachment] = []
464
- for attachmentMap in attachmentsMap {
465
- if let attachmentMap = attachmentMap as? NSDictionary,
466
- let identifier = attachmentMap.object(forKey: "identifier") as? String,
467
- let type = attachmentMap.object(forKey: "type") as? String,
468
- let url = attachmentMap.object(forKey: "url") as? String {
469
- let attachment = MessageNotificationAttachment(identifier: identifier, type: type, url: url)
470
- attachments.append(attachment)
471
- }
472
- }
473
-
474
- event.attachments = attachments
475
- }
476
- if let bodyLocArgs = argmap.object(forKey: "bodyLocArgs") as? NSArray {
477
- event.bodyLocArgs = bodyLocArgs.map { $0 as? String}.compactMap { $0 }
478
- }
479
- if let bodyLocKey = argmap.object(forKey: "bodyLocKey") as? String {
480
- event.bodyLocKey = bodyLocKey
481
- }
482
- if let category = argmap.object(forKey: "category") as? String {
483
- event.category = category
484
- }
485
- if let contentAvailable = argmap.object(forKey: "contentAvailable") as? NSNumber {
486
- event.contentAvailable = contentAvailable.boolValue
487
- }
488
- if let group = argmap.object(forKey: "group") as? String {
489
- event.group = group
490
- }
491
- if let icon = argmap.object(forKey: "icon") as? String {
492
- event.icon = icon
493
- }
494
- if let notificationCount = argmap.object(forKey: "notificationCount") as? NSNumber {
495
- event.notificationCount = notificationCount.intValue
496
- }
497
- if let notificationTimestamp = argmap.object(forKey: "notificationTimestamp") as? String {
498
- event.notificationTimestamp = notificationTimestamp
499
- }
500
- if let sound = argmap.object(forKey: "sound") as? String {
501
- event.sound = sound
502
- }
503
- if let subtitle = argmap.object(forKey: "subtitle") as? String {
504
- event.subtitle = subtitle
505
- }
506
- if let tag = argmap.object(forKey: "tag") as? String {
507
- event.tag = tag
508
- }
509
- if let threadIdentifier = argmap.object(forKey: "threadIdentifier") as? String {
510
- event.threadIdentifier = threadIdentifier
511
- }
512
- if let titleLocArgs = argmap.object(forKey: "titleLocArgs") as? NSArray {
513
- event.titleLocArgs = titleLocArgs.map { $0 as? String}.compactMap { $0 }
514
- }
515
- if let titleLocKey = argmap.object(forKey: "titleLocKey") as? String {
516
- event.titleLocKey = titleLocKey
517
- }
518
-
519
- if let contexts = details.object(forKey: "contexts") as? NSArray {
520
- event.entities = Utilities.mkSDJArray(contexts)
521
- }
522
- _ = trackerController.track(event)
523
- resolve(true)
524
- } else {
525
- let error = NSError(domain: "SnowplowTracker", code: 200)
526
- reject("ERROR", "tracker with given namespace not found", error)
527
- }
528
- }
529
-
530
- @objc(removeGlobalContexts:resolver:rejecter:)
531
- func removeGlobalContexts(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
532
- let namespace = details.object(forKey: "tracker") as? String
533
- if let trackerController = trackerByNamespace(namespace),
534
- let tag = details.object(forKey: "removeTag") as? String {
535
- _ = trackerController.globalContexts?.remove(tag: tag)
536
- resolve(true)
537
- } else {
538
- let error = NSError(domain: "SnowplowTracker", code: 200)
539
- reject("ERROR", "tracker with given namespace not found", error)
540
- }
541
- }
542
-
543
- @objc(addGlobalContexts:resolver:rejecter:)
544
- func addGlobalContexts(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
545
- let namespace = details.object(forKey: "tracker") as? String
546
- if let trackerController = trackerByNamespace(namespace),
547
- let gcArg = details.object(forKey: "addGlobalContext") as? NSDictionary,
548
- let tag = gcArg.object(forKey: "tag") as? String,
549
- let globalContexts = gcArg.object(forKey: "globalContexts") as? NSArray {
550
- let staticContexts = Utilities.mkSDJArray(globalContexts)
551
- let gcStatic = GlobalContext(staticContexts: staticContexts)
552
-
553
- _ = trackerController.globalContexts?.add(tag: tag, contextGenerator: gcStatic)
554
-
555
- resolve(true)
556
- } else {
557
- let error = NSError(domain: "SnowplowTracker", code: 200)
558
- reject("ERROR", "tracker with given namespace not found", error)
559
- }
560
- }
561
-
562
- @objc(setUserId:resolver:rejecter:)
563
- func setUserId(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
564
- let namespace = details.object(forKey: "tracker") as? String
565
- if let trackerController = trackerByNamespace(namespace) {
566
- let newUid = details.object(forKey: "userId") as? String
567
- trackerController.subject?.userId = newUid
568
-
569
- resolve(true)
570
- } else {
571
- let error = NSError(domain: "SnowplowTracker", code: 200)
572
- reject("ERROR", "tracker with given namespace not found", error)
573
- }
574
- }
575
-
576
- @objc(setNetworkUserId:resolver:rejecter:)
577
- func setNetworkUserId(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
578
- let namespace = details.object(forKey: "tracker") as? String
579
- if let trackerController = trackerByNamespace(namespace) {
580
-
581
- let newNuid = details.object(forKey: "networkUserId") as? String
582
- trackerController.subject?.networkUserId = newNuid
583
-
584
- resolve(true)
585
- } else {
586
- let error = NSError(domain: "SnowplowTracker", code: 200)
587
- reject("ERROR", "tracker with given namespace not found", error)
588
- }
589
- }
590
-
591
- @objc(setDomainUserId:resolver:rejecter:)
592
- func setDomainUserId(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
593
- let namespace = details.object(forKey: "tracker") as? String
594
- if let trackerController = trackerByNamespace(namespace) {
595
-
596
- let newDuid = details.object(forKey: "domainUserId") as? String
597
- trackerController.subject?.domainUserId = newDuid
598
-
599
- resolve(true)
600
- } else {
601
- let error = NSError(domain: "SnowplowTracker", code: 200)
602
- reject("ERROR", "tracker with given namespace not found", error)
603
- }
604
- }
605
-
606
- @objc(setIpAddress:resolver:rejecter:)
607
- func setIpAddress(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
608
- let namespace = details.object(forKey: "tracker") as? String
609
- if let trackerController = trackerByNamespace(namespace) {
610
-
611
- let newIp = details.object(forKey: "ipAddress") as? String
612
- trackerController.subject?.ipAddress = newIp
613
-
614
- resolve(true)
615
- } else {
616
- let error = NSError(domain: "SnowplowTracker", code: 200)
617
- reject("ERROR", "tracker with given namespace not found", error)
618
- }
619
- }
620
-
621
- @objc(setUseragent:resolver:rejecter:)
622
- func setUseragent(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
623
- let namespace = details.object(forKey: "tracker") as? String
624
- if let trackerController = trackerByNamespace(namespace) {
625
-
626
- let newUagent = details.object(forKey: "useragent") as? String
627
- trackerController.subject?.useragent = newUagent
628
-
629
- resolve(true)
630
- } else {
631
- let error = NSError(domain: "SnowplowTracker", code: 200)
632
- reject("ERROR", "tracker with given namespace not found", error)
633
- }
634
- }
635
-
636
- @objc(setTimezone:resolver:rejecter:)
637
- func setTimezone(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
638
- let namespace = details.object(forKey: "tracker") as? String
639
- if let trackerController = trackerByNamespace(namespace) {
640
-
641
- let newTz = details.object(forKey: "timezone") as? String
642
- trackerController.subject?.timezone = newTz
643
-
644
- resolve(true)
645
- } else {
646
- let error = NSError(domain: "SnowplowTracker", code: 200)
647
- reject("ERROR", "tracker with given namespace not found", error)
648
- }
649
- }
650
-
651
- @objc(setLanguage:resolver:rejecter:)
652
- func setLanguage(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
653
- let namespace = details.object(forKey: "tracker") as? String
654
- if let trackerController = trackerByNamespace(namespace) {
655
-
656
- let newLang = details.object(forKey: "language") as? String
657
- trackerController.subject?.language = newLang
658
-
659
- resolve(true)
660
- } else {
661
- let error = NSError(domain: "SnowplowTracker", code: 200)
662
- reject("ERROR", "tracker with given namespace not found", error)
663
- }
664
- }
665
-
666
- @objc(setScreenResolution:resolver:rejecter:)
667
- func setScreenResolution(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
668
- let namespace = details.object(forKey: "tracker") as? String
669
- if let trackerController = trackerByNamespace(namespace) {
670
-
671
- if let newRes = details.object(forKey: "screenResolution") as? NSArray,
672
- let resWidth = newRes.object(at: 0) as? NSNumber,
673
- let resHeight = newRes.object(at: 1) as? NSNumber {
674
- let resSize = SPSize(width: resWidth.intValue, height: resHeight.intValue)
675
- trackerController.subject?.screenResolution = resSize
676
- }
677
- else {
678
- trackerController.subject?.screenResolution = nil
679
- }
680
-
681
- resolve(true)
682
- } else {
683
- let error = NSError(domain: "SnowplowTracker", code: 200)
684
- reject("ERROR", "tracker with given namespace not found", error)
685
- }
686
- }
687
-
688
- @objc(setScreenViewport:resolver:rejecter:)
689
- func setScreenViewport(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
690
- let namespace = details.object(forKey: "tracker") as? String
691
- if let trackerController = trackerByNamespace(namespace) {
692
-
693
- if let newView = details.object(forKey: "screenViewport") as? NSArray,
694
- let vpWidth = newView.object(at: 0) as? NSNumber,
695
- let vpHeight = newView.object(at: 1) as? NSNumber {
696
- let vpSize = SPSize(width: vpWidth.intValue, height: vpHeight.intValue)
697
- trackerController.subject?.screenViewPort = vpSize
698
- }
699
- else {
700
- trackerController.subject?.screenViewPort = nil
701
- }
702
-
703
- resolve(true)
704
- } else {
705
- let error = NSError(domain: "SnowplowTracker", code: 200)
706
- reject("ERROR", "tracker with given namespace not found", error)
707
- }
708
- }
709
-
710
- @objc(setColorDepth:resolver:rejecter:)
711
- func setColorDepth(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
712
- let namespace = details.object(forKey: "tracker") as? String
713
- if let trackerController = trackerByNamespace(namespace) {
714
-
715
- let newColorD = details.object(forKey: "colorDepth") as? NSNumber
716
- trackerController.subject?.colorDepth = newColorD
717
-
718
- resolve(true)
719
- } else {
720
- let error = NSError(domain: "SnowplowTracker", code: 200)
721
- reject("ERROR", "tracker with given namespace not found", error)
722
- }
723
- }
724
-
725
- @objc(getSessionUserId:resolver:rejecter:)
726
- func getSessionUserId(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
727
- let namespace = details.object(forKey: "tracker") as? String
728
- if let trackerController = trackerByNamespace(namespace) {
729
-
730
- resolve(trackerController.session?.userId)
731
-
732
- } else {
733
- let error = NSError(domain: "SnowplowTracker", code: 200)
734
- reject("ERROR", "tracker with given namespace not found", error)
735
- }
736
- }
737
-
738
- @objc(getSessionId:resolver:rejecter:)
739
- func getSessionId(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
740
- let namespace = details.object(forKey: "tracker") as? String
741
- if let trackerController = trackerByNamespace(namespace) {
742
-
743
- resolve(trackerController.session?.sessionId)
744
-
745
- } else {
746
- let error = NSError(domain: "SnowplowTracker", code: 200)
747
- reject("ERROR", "tracker with given namespace not found", error)
748
- }
749
- }
750
-
751
- @objc(getSessionIndex:resolver:rejecter:)
752
- func getSessionIndex(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
753
- let namespace = details.object(forKey: "tracker") as? String
754
- if let trackerController = trackerByNamespace(namespace) {
755
-
756
- if let sessionIndex = trackerController.session?.sessionIndex {
757
- resolve(NSNumber(integerLiteral: sessionIndex))
758
- } else {
759
- resolve(nil)
760
- }
761
- } else {
762
- let error = NSError(domain: "SnowplowTracker", code: 200)
763
- reject("ERROR", "tracker with given namespace not found", error)
764
- }
765
- }
766
-
767
- @objc(getIsInBackground:resolver:rejecter:)
768
- func getIsInBackground(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
769
- let namespace = details.object(forKey: "tracker") as? String
770
- if let trackerController = trackerByNamespace(namespace) {
771
-
772
- if let isInBg = trackerController.session?.isInBackground {
773
- resolve(NSNumber(booleanLiteral: isInBg))
774
- } else {
775
- resolve(nil)
776
- }
777
- } else {
778
- let error = NSError(domain: "SnowplowTracker", code: 200)
779
- reject("ERROR", "tracker with given namespace not found", error)
780
- }
781
- }
782
-
783
- @objc(getBackgroundIndex:resolver:rejecter:)
784
- func getBackgroundIndex(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
785
- let namespace = details.object(forKey: "tracker") as? String
786
- if let trackerController = trackerByNamespace(namespace) {
787
-
788
- if let bgIdx = trackerController.session?.backgroundIndex {
789
- resolve(NSNumber(integerLiteral: bgIdx))
790
- } else {
791
- resolve(nil)
792
- }
793
- } else {
794
- let error = NSError(domain: "SnowplowTracker", code: 200)
795
- reject("ERROR", "tracker with given namespace not found", error)
796
- }
797
- }
798
-
799
- @objc(getForegroundIndex:resolver:rejecter:)
800
- func getForegroundIndex(details:NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
801
- let namespace = details.object(forKey: "tracker") as? String
802
- if let trackerController = trackerByNamespace(namespace) {
803
-
804
- if let fgIdx = trackerController.session?.foregroundIndex {
805
- resolve(NSNumber(integerLiteral: fgIdx))
806
- } else {
807
- resolve(nil)
808
- }
809
- } else {
810
- let error = NSError(domain: "SnowplowTracker", code: 200)
811
- reject("ERROR", "tracker with given namespace not found", error)
812
- }
813
- }
814
-
815
- func trackerByNamespace(_ namespace: String?) -> TrackerController? {
816
- if let namespace = namespace {
817
- return Snowplow.tracker(namespace: namespace)
818
- } else {
819
- return Snowplow.defaultTracker()
820
- }
821
- }
822
- }