diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index e73e96206..88b86aeee 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -148,16 +148,6 @@ public void trackEvent(String name, ReadableMap dataFields) { public void updateCart(ReadableArray items) { IterableLogger.v(TAG, "UpdateCart API"); - JSONObject dataFieldsJson = null; - - try { - if (dataFields != null) { - dataFieldsJson = Serialization.convertMapToJson(dataFields); - } - } catch (JSONException e) { - IterableLogger.e(TAG, "Failed converting JSON to object"); - } - IterableApi.getInstance().updateCart(Serialization.commerceItemsFromReadableArray(items)); } diff --git a/android/src/main/java/com/iterable/reactnative/Serialization.java b/android/src/main/java/com/iterable/reactnative/Serialization.java index f8376f674..189c8fe0e 100644 --- a/android/src/main/java/com/iterable/reactnative/Serialization.java +++ b/android/src/main/java/com/iterable/reactnative/Serialization.java @@ -81,9 +81,9 @@ static List commerceItemsFromReadableArray(ReadableArray array) { } static CommerceItem commerceItemFromMap(JSONObject itemMap) throws JSONException { - String[] categories = null; JSONArray categoriesArray = itemMap.optJSONArray("categories"); + if (categoriesArray != null) { for (int i = 0; i < categoriesArray.length(); i++) { if (categories == null) { @@ -92,6 +92,7 @@ static CommerceItem commerceItemFromMap(JSONObject itemMap) throws JSONException categories[i] = categoriesArray.getString(i); } } + return new CommerceItem(itemMap.getString("id"), itemMap.getString("name"), itemMap.getDouble("price"), @@ -100,7 +101,8 @@ static CommerceItem commerceItemFromMap(JSONObject itemMap) throws JSONException itemMap.optString("description", null), itemMap.optString("url", null), itemMap.optString("imageUrl", null), - categories + categories, + itemMap.optJSONObject("dataFields") ); } diff --git a/ios/RNIterableAPI/Serialization.swift b/ios/RNIterableAPI/Serialization.swift index 8f5cfac61..67b18ad2f 100644 --- a/ios/RNIterableAPI/Serialization.swift +++ b/ios/RNIterableAPI/Serialization.swift @@ -90,6 +90,7 @@ extension CommerceItem { let url = dict["url"] as? String let imageUrl = dict["imageUrl"] as? String let categories = dict["categories"] as? [String] + let dataFields = dict["dataFields"] as? [AnyHashable: Any] return CommerceItem(id: id, name: name, @@ -99,7 +100,8 @@ extension CommerceItem { description: description, url: url, imageUrl: imageUrl, - categories: categories) + categories: categories, + dataFields: dataFields) } } diff --git a/ts/Iterable.ts b/ts/Iterable.ts index ea6e6fc22..934ae323e 100644 --- a/ts/Iterable.ts +++ b/ts/Iterable.ts @@ -170,8 +170,9 @@ class IterableCommerceItem { url?: string imageUrl?: string categories?: Array + dataFields?: any - constructor(id: string, name: string, price: number, quantity: number, sku?: string, description?: string, url?: string, imageUrl?: string, categories?: Array) { + constructor(id: string, name: string, price: number, quantity: number, sku?: string, description?: string, url?: string, imageUrl?: string, categories?: Array, dataFields?: any | undefined) { this.id = id this.name = name this.price = price @@ -181,6 +182,7 @@ class IterableCommerceItem { this.url = url this.imageUrl = imageUrl this.categories = categories + this.dataFields = dataFields } }