@snowplow/react-native-tracker 2.1.1 → 4.0.2-dev.0

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 (232) hide show
  1. package/LICENSE +29 -203
  2. package/README.md +59 -143
  3. package/dist/index.cjs.d.ts +499 -0
  4. package/dist/index.cjs.js +2656 -0
  5. package/dist/index.cjs.js.map +1 -0
  6. package/dist/index.cjs.min.d.ts +499 -0
  7. package/dist/index.cjs.min.js +63 -0
  8. package/dist/index.cjs.min.js.map +1 -0
  9. package/dist/index.module.d.ts +499 -0
  10. package/dist/index.module.js +250 -0
  11. package/dist/index.module.js.map +1 -0
  12. package/package.json +48 -158
  13. package/.editorconfig +0 -15
  14. package/.eslintignore +0 -6
  15. package/.gitattributes +0 -3
  16. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -29
  17. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  18. package/.github/actions/setup/action.yml +0 -28
  19. package/.github/workflows/build.yml +0 -155
  20. package/.github/workflows/deploy.yml +0 -97
  21. package/.github/workflows/e2e-android.yml +0 -121
  22. package/.github/workflows/e2e-ios.yml +0 -95
  23. package/.github/workflows/snyk.yml +0 -21
  24. package/.gitignore +0 -70
  25. package/.npmignore +0 -60
  26. package/.nvmrc +0 -1
  27. package/.watchmanconfig +0 -1
  28. package/.yarnrc +0 -3
  29. package/CHANGELOG +0 -180
  30. package/CONTRIBUTING.md +0 -80
  31. package/android/build.gradle +0 -110
  32. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  33. package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  34. package/android/gradle.properties +0 -5
  35. package/android/gradlew +0 -234
  36. package/android/gradlew.bat +0 -89
  37. package/android/src/main/AndroidManifest.xml +0 -3
  38. package/android/src/main/AndroidManifestNew.xml +0 -2
  39. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerModule.kt +0 -744
  40. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerPackage.kt +0 -17
  41. package/android/src/main/java/com/snowplow/reactnativetracker/util/ConfigUtil.kt +0 -274
  42. package/android/src/main/java/com/snowplow/reactnativetracker/util/EventUtil.kt +0 -233
  43. package/android/src/main/java/com/snowplow/reactnativetracker/util/TrackerVersion.kt +0 -5
  44. package/babel.config.js +0 -3
  45. package/example/.watchmanconfig +0 -1
  46. package/example/Gemfile +0 -6
  47. package/example/android/app/build.gradle +0 -129
  48. package/example/android/app/debug.keystore +0 -0
  49. package/example/android/app/proguard-rules.pro +0 -10
  50. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTest.java +0 -36
  51. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTestAppJUnitRunner.java +0 -21
  52. package/example/android/app/src/debug/AndroidManifest.xml +0 -13
  53. package/example/android/app/src/debug/java/com/reactnativetrackerexample/ReactNativeFlipper.java +0 -75
  54. package/example/android/app/src/main/AndroidManifest.xml +0 -26
  55. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainActivity.java +0 -32
  56. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainApplication.java +0 -62
  57. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -36
  58. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  59. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  60. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  61. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  62. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  63. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  64. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  65. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  66. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  67. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  68. package/example/android/app/src/main/res/values/strings.xml +0 -3
  69. package/example/android/app/src/main/res/values/styles.xml +0 -9
  70. package/example/android/app/src/release/java/com/reactnativetrackerexample/ReactNativeFlipper.java +0 -20
  71. package/example/android/build.gradle +0 -31
  72. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  73. package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  74. package/example/android/gradle.properties +0 -44
  75. package/example/android/gradlew +0 -244
  76. package/example/android/gradlew.bat +0 -92
  77. package/example/android/settings.gradle +0 -4
  78. package/example/app.json +0 -4
  79. package/example/babel.config.js +0 -17
  80. package/example/detox.config.js +0 -92
  81. package/example/e2e/config.json +0 -10
  82. package/example/e2e/emitEvents.e2e.detox.js +0 -95
  83. package/example/e2e/environment.js +0 -23
  84. package/example/e2e/helpers/microCommands.js +0 -140
  85. package/example/e2e/helpers/microHelpers.js +0 -333
  86. package/example/e2e/helpers/microHelpers.test.js +0 -295
  87. package/example/e2e/helpers/schemas.js +0 -49
  88. package/example/e2e/jest.config.js +0 -16
  89. package/example/e2e/setup.js +0 -4
  90. package/example/e2e/testEvents.micro.test.js +0 -287
  91. package/example/index.js +0 -5
  92. package/example/ios/.xcode.env +0 -11
  93. package/example/ios/Podfile +0 -62
  94. package/example/ios/Podfile.lock +0 -730
  95. package/example/ios/ReactNativeTrackerExample/AppDelegate.h +0 -6
  96. package/example/ios/ReactNativeTrackerExample/AppDelegate.mm +0 -26
  97. package/example/ios/ReactNativeTrackerExample/Images.xcassets/AppIcon.appiconset/Contents.json +0 -53
  98. package/example/ios/ReactNativeTrackerExample/Images.xcassets/Contents.json +0 -6
  99. package/example/ios/ReactNativeTrackerExample/Info.plist +0 -55
  100. package/example/ios/ReactNativeTrackerExample/LaunchScreen.storyboard +0 -47
  101. package/example/ios/ReactNativeTrackerExample/PrivacyInfo.xcprivacy +0 -37
  102. package/example/ios/ReactNativeTrackerExample/main.m +0 -10
  103. package/example/ios/ReactNativeTrackerExample-Bridging-Header.h +0 -3
  104. package/example/ios/ReactNativeTrackerExample.xcodeproj/project.pbxproj +0 -739
  105. package/example/ios/ReactNativeTrackerExample.xcodeproj/xcshareddata/xcschemes/ReactNativeTrackerExample.xcscheme +0 -88
  106. package/example/ios/ReactNativeTrackerExample.xcworkspace/contents.xcworkspacedata +0 -10
  107. package/example/ios/ReactNativeTrackerExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  108. package/example/ios/ReactNativeTrackerExampleTests/Info.plist +0 -24
  109. package/example/ios/ReactNativeTrackerExampleTests/ReactNativeTrackerExampleTests.m +0 -66
  110. package/example/metro.config.js +0 -45
  111. package/example/package.json +0 -54
  112. package/example/react-native.config.js +0 -10
  113. package/example/src/App.js +0 -566
  114. package/example/tsconfig.json +0 -5
  115. package/example/yarn.lock +0 -7703
  116. package/ios/ReactNativeTracker-Bridging-Header.h +0 -2
  117. package/ios/ReactNativeTracker.mm +0 -175
  118. package/ios/ReactNativeTracker.swift +0 -822
  119. package/ios/ReactNativeTracker.xcodeproj/project.pbxproj +0 -301
  120. package/ios/Util/ConfigUtils.swift +0 -209
  121. package/ios/Util/TrackerVersion.swift +0 -3
  122. package/ios/Util/Utilities.swift +0 -37
  123. package/lefthook.yml +0 -11
  124. package/lib/commonjs/api.js +0 -490
  125. package/lib/commonjs/api.js.map +0 -1
  126. package/lib/commonjs/configurations.js +0 -196
  127. package/lib/commonjs/configurations.js.map +0 -1
  128. package/lib/commonjs/constants.js +0 -77
  129. package/lib/commonjs/constants.js.map +0 -1
  130. package/lib/commonjs/events.js +0 -277
  131. package/lib/commonjs/events.js.map +0 -1
  132. package/lib/commonjs/index.js +0 -132
  133. package/lib/commonjs/index.js.map +0 -1
  134. package/lib/commonjs/jsCore.js +0 -427
  135. package/lib/commonjs/jsCore.js.map +0 -1
  136. package/lib/commonjs/native.js +0 -16
  137. package/lib/commonjs/native.js.map +0 -1
  138. package/lib/commonjs/subject.js +0 -235
  139. package/lib/commonjs/subject.js.map +0 -1
  140. package/lib/commonjs/tracker.js +0 -248
  141. package/lib/commonjs/tracker.js.map +0 -1
  142. package/lib/commonjs/types.js +0 -2
  143. package/lib/commonjs/types.js.map +0 -1
  144. package/lib/commonjs/utils.js +0 -72
  145. package/lib/commonjs/utils.js.map +0 -1
  146. package/lib/commonjs/webViewInterface.js +0 -66
  147. package/lib/commonjs/webViewInterface.js.map +0 -1
  148. package/lib/module/api.js +0 -452
  149. package/lib/module/api.js.map +0 -1
  150. package/lib/module/configurations.js +0 -184
  151. package/lib/module/configurations.js.map +0 -1
  152. package/lib/module/constants.js +0 -72
  153. package/lib/module/constants.js.map +0 -1
  154. package/lib/module/events.js +0 -259
  155. package/lib/module/events.js.map +0 -1
  156. package/lib/module/index.js +0 -120
  157. package/lib/module/index.js.map +0 -1
  158. package/lib/module/jsCore.js +0 -424
  159. package/lib/module/jsCore.js.map +0 -1
  160. package/lib/module/native.js +0 -12
  161. package/lib/module/native.js.map +0 -1
  162. package/lib/module/subject.js +0 -222
  163. package/lib/module/subject.js.map +0 -1
  164. package/lib/module/tracker.js +0 -234
  165. package/lib/module/tracker.js.map +0 -1
  166. package/lib/module/types.js +0 -2
  167. package/lib/module/types.js.map +0 -1
  168. package/lib/module/utils.js +0 -66
  169. package/lib/module/utils.js.map +0 -1
  170. package/lib/module/webViewInterface.js +0 -62
  171. package/lib/module/webViewInterface.js.map +0 -1
  172. package/lib/typescript/__tests__/api.test.d.ts +0 -2
  173. package/lib/typescript/__tests__/api.test.d.ts.map +0 -1
  174. package/lib/typescript/__tests__/configurations.test.d.ts +0 -2
  175. package/lib/typescript/__tests__/configurations.test.d.ts.map +0 -1
  176. package/lib/typescript/__tests__/events.test.d.ts +0 -2
  177. package/lib/typescript/__tests__/events.test.d.ts.map +0 -1
  178. package/lib/typescript/__tests__/index.test.d.ts +0 -2
  179. package/lib/typescript/__tests__/index.test.d.ts.map +0 -1
  180. package/lib/typescript/__tests__/jsCore.test.d.ts +0 -2
  181. package/lib/typescript/__tests__/jsCore.test.d.ts.map +0 -1
  182. package/lib/typescript/__tests__/utils.test.d.ts +0 -2
  183. package/lib/typescript/__tests__/utils.test.d.ts.map +0 -1
  184. package/lib/typescript/api.d.ts +0 -240
  185. package/lib/typescript/api.d.ts.map +0 -1
  186. package/lib/typescript/configurations.d.ts +0 -73
  187. package/lib/typescript/configurations.d.ts.map +0 -1
  188. package/lib/typescript/constants.d.ts +0 -64
  189. package/lib/typescript/constants.d.ts.map +0 -1
  190. package/lib/typescript/events.d.ts +0 -115
  191. package/lib/typescript/events.d.ts.map +0 -1
  192. package/lib/typescript/index.d.ts +0 -27
  193. package/lib/typescript/index.d.ts.map +0 -1
  194. package/lib/typescript/jsCore.d.ts +0 -152
  195. package/lib/typescript/jsCore.d.ts.map +0 -1
  196. package/lib/typescript/native.d.ts +0 -4
  197. package/lib/typescript/native.d.ts.map +0 -1
  198. package/lib/typescript/subject.d.ts +0 -91
  199. package/lib/typescript/subject.d.ts.map +0 -1
  200. package/lib/typescript/tracker.d.ts +0 -111
  201. package/lib/typescript/tracker.d.ts.map +0 -1
  202. package/lib/typescript/types.d.ts +0 -981
  203. package/lib/typescript/types.d.ts.map +0 -1
  204. package/lib/typescript/utils.d.ts +0 -35
  205. package/lib/typescript/utils.d.ts.map +0 -1
  206. package/lib/typescript/webViewInterface.d.ts +0 -15
  207. package/lib/typescript/webViewInterface.d.ts.map +0 -1
  208. package/scripts/bootstrap.js +0 -29
  209. package/snowplow-react-native-tracker.podspec +0 -42
  210. package/src/__mocks__/react-native.js +0 -7
  211. package/src/__tests__/api.test.ts +0 -21
  212. package/src/__tests__/configurations.test.ts +0 -608
  213. package/src/__tests__/events.test.ts +0 -736
  214. package/src/__tests__/index.test.ts +0 -14
  215. package/src/__tests__/jsCore.test.ts +0 -199
  216. package/src/__tests__/utils.test.ts +0 -10
  217. package/src/api.ts +0 -556
  218. package/src/configurations.ts +0 -325
  219. package/src/constants.ts +0 -97
  220. package/src/events.ts +0 -355
  221. package/src/index.ts +0 -184
  222. package/src/jsCore.ts +0 -603
  223. package/src/native.ts +0 -21
  224. package/src/subject.ts +0 -302
  225. package/src/tracker.ts +0 -377
  226. package/src/types.ts +0 -1162
  227. package/src/utils.ts +0 -65
  228. package/src/webViewInterface.ts +0 -92
  229. package/tsconfig.build.json +0 -5
  230. package/tsconfig.json +0 -28
  231. package/turbo.json +0 -34
  232. 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
- }