rn-linkrunner 2.7.0 → 2.7.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.
@@ -38,7 +38,7 @@ class LinkrunnerModule(private val reactContext: ReactApplicationContext) : Reac
38
38
  val keyId = options?.getString("keyId")
39
39
  val debug = options?.getBoolean("debug") ?: false
40
40
 
41
- val packageVersion = options?.getString("packageVersion") ?: "2.7.0" // React Native package version
41
+ val packageVersion = options?.getString("packageVersion") ?: "2.7.1" // React Native package version
42
42
 
43
43
  if (token.isEmpty()) {
44
44
  promise.reject("INIT_ERROR", "Token is required")
@@ -184,12 +184,59 @@ class LinkrunnerSDK: NSObject {
184
184
 
185
185
  @objc func getAttributionData(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
186
186
  Task {
187
- do {
188
- let attributionData = try await linkrunnerSDK.getAttributionData()
189
- resolve(attributionData.toDictionary())
190
- } catch {
191
- reject("ATTRIBUTION_ERROR", "Failed to get attribution data: \(error.localizedDescription)", error)
187
+ let attributionData = await linkrunnerSDK.getAttributionData()
188
+
189
+ var response: [String: Any] = [:]
190
+
191
+ if let deeplink = attributionData.deeplink {
192
+ response["deeplink"] = deeplink
192
193
  }
194
+
195
+ if let campaignData = attributionData.campaignData {
196
+ let dateFormatter = ISO8601DateFormatter()
197
+ dateFormatter.formatOptions = [.withInternetDateTime]
198
+
199
+ var campaignDataMap: [String: Any] = [
200
+ "id": campaignData.id,
201
+ "name": campaignData.name,
202
+ "type": campaignData.type.rawValue
203
+ ]
204
+
205
+ if let adNetwork = campaignData.adNetwork {
206
+ // camelCase (correct, matches TypeScript type and Android)
207
+ campaignDataMap["adNetwork"] = adNetwork.rawValue
208
+ // snake_case (deprecated, for backward compatibility)
209
+ campaignDataMap["ad_network"] = adNetwork.rawValue
210
+ }
211
+ if let groupName = campaignData.groupName {
212
+ campaignDataMap["groupName"] = groupName
213
+ campaignDataMap["group_name"] = groupName
214
+ }
215
+ if let assetGroupName = campaignData.assetGroupName {
216
+ campaignDataMap["assetGroupName"] = assetGroupName
217
+ campaignDataMap["asset_group_name"] = assetGroupName
218
+ }
219
+ if let assetName = campaignData.assetName {
220
+ campaignDataMap["assetName"] = assetName
221
+ campaignDataMap["asset_name"] = assetName
222
+ }
223
+ let installedAtDate = campaignData.installedAt ?? Date()
224
+ let installedAtString = dateFormatter.string(from: installedAtDate)
225
+ campaignDataMap["installedAt"] = installedAtString
226
+ campaignDataMap["installed_at"] = installedAtString
227
+ if let storeClickAt = campaignData.storeClickAt {
228
+ let dateString = dateFormatter.string(from: storeClickAt)
229
+ campaignDataMap["storeClickAt"] = dateString
230
+ campaignDataMap["store_click_at"] = dateString
231
+ }
232
+
233
+ // camelCase (correct, matches TypeScript type and Android)
234
+ response["campaignData"] = campaignDataMap
235
+ // snake_case (deprecated, for backward compatibility)
236
+ response["campaign_data"] = campaignDataMap
237
+ }
238
+
239
+ resolve(response)
193
240
  }
194
241
  }
195
242
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rn-linkrunner",
3
- "version": "2.7.0",
3
+ "version": "2.7.1",
4
4
  "description": "React Native Package for linkrunner",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",