diff --git a/.gitignore b/.gitignore index 2a61c156..9a2f3816 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ coverage/ # tsc / build # +.env .gradle build dist diff --git a/android/src/main/java/com/onesignal/rnonesignalandroid/RNUtils.java b/android/src/main/java/com/onesignal/rnonesignalandroid/RNUtils.java index 8a09774e..29d1f722 100644 --- a/android/src/main/java/com/onesignal/rnonesignalandroid/RNUtils.java +++ b/android/src/main/java/com/onesignal/rnonesignalandroid/RNUtils.java @@ -5,6 +5,7 @@ import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableMapKeySetIterator; import com.facebook.react.bridge.ReadableType; +import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import com.onesignal.inAppMessages.IInAppMessage; import com.onesignal.inAppMessages.IInAppMessageClickEvent; @@ -51,6 +52,8 @@ public static WritableMap convertHashMapToWritableMap(HashMap ha writableMap.putDouble(key, ((Long) value).doubleValue()); } else if (value instanceof HashMap) { writableMap.putMap(key, convertHashMapToWritableMap((HashMap) value)); + } else if (value instanceof List) { + writableMap.putArray(key, convertListToWritableArray((List) value)); } else { writableMap.putNull(key); } @@ -287,4 +290,30 @@ private static List convertJSONArrayToList(JSONArray array) throws JSONE return list; } + + private static WritableArray convertListToWritableArray(List list) throws JSONException { + WritableArray writableArray = Arguments.createArray(); + for (Object item : list) { + if (item instanceof String) { + writableArray.pushString((String) item); + } else if (item instanceof Boolean) { + writableArray.pushBoolean((Boolean) item); + } else if (item instanceof Integer) { + writableArray.pushInt((Integer) item); + } else if (item instanceof Double) { + writableArray.pushDouble((Double) item); + } else if (item instanceof Float) { + writableArray.pushDouble(((Float) item).doubleValue()); + } else if (item instanceof Long) { + writableArray.pushDouble(((Long) item).doubleValue()); + } else if (item instanceof HashMap) { + writableArray.pushMap(convertHashMapToWritableMap((HashMap) item)); + } else if (item instanceof List) { + writableArray.pushArray(convertListToWritableArray((List) item)); + } else { + writableArray.pushNull(); + } + } + return writableArray; + } }