Skip to content

Commit d2fec8b

Browse files
authored
fix: adjust parsing logic for array data for Android (#1883)
1 parent 44cda59 commit d2fec8b

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ coverage/
99

1010
# tsc / build
1111
#
12+
.env
1213
.gradle
1314
build
1415
dist

android/src/main/java/com/onesignal/rnonesignalandroid/RNUtils.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.facebook.react.bridge.ReadableMap;
66
import com.facebook.react.bridge.ReadableMapKeySetIterator;
77
import com.facebook.react.bridge.ReadableType;
8+
import com.facebook.react.bridge.WritableArray;
89
import com.facebook.react.bridge.WritableMap;
910
import com.onesignal.inAppMessages.IInAppMessage;
1011
import com.onesignal.inAppMessages.IInAppMessageClickEvent;
@@ -51,6 +52,8 @@ public static WritableMap convertHashMapToWritableMap(HashMap<String, Object> ha
5152
writableMap.putDouble(key, ((Long) value).doubleValue());
5253
} else if (value instanceof HashMap) {
5354
writableMap.putMap(key, convertHashMapToWritableMap((HashMap<String, Object>) value));
55+
} else if (value instanceof List) {
56+
writableMap.putArray(key, convertListToWritableArray((List<Object>) value));
5457
} else {
5558
writableMap.putNull(key);
5659
}
@@ -287,4 +290,30 @@ private static List<Object> convertJSONArrayToList(JSONArray array) throws JSONE
287290

288291
return list;
289292
}
293+
294+
private static WritableArray convertListToWritableArray(List<Object> list) throws JSONException {
295+
WritableArray writableArray = Arguments.createArray();
296+
for (Object item : list) {
297+
if (item instanceof String) {
298+
writableArray.pushString((String) item);
299+
} else if (item instanceof Boolean) {
300+
writableArray.pushBoolean((Boolean) item);
301+
} else if (item instanceof Integer) {
302+
writableArray.pushInt((Integer) item);
303+
} else if (item instanceof Double) {
304+
writableArray.pushDouble((Double) item);
305+
} else if (item instanceof Float) {
306+
writableArray.pushDouble(((Float) item).doubleValue());
307+
} else if (item instanceof Long) {
308+
writableArray.pushDouble(((Long) item).doubleValue());
309+
} else if (item instanceof HashMap) {
310+
writableArray.pushMap(convertHashMapToWritableMap((HashMap<String, Object>) item));
311+
} else if (item instanceof List) {
312+
writableArray.pushArray(convertListToWritableArray((List<Object>) item));
313+
} else {
314+
writableArray.pushNull();
315+
}
316+
}
317+
return writableArray;
318+
}
290319
}

0 commit comments

Comments
 (0)