From f988ba5c23dc17695302a192efe79166d208eed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20F=C3=A3o=20Valvassori?= Date: Mon, 30 Oct 2017 17:52:12 -0200 Subject: [PATCH] Fixed when receive string instead of an array My app was crashing when a user comes with a single group on IQ. This change solved the problem. (I am using prosody server) --- android/src/main/java/rnxmpp/utils/Parser.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/rnxmpp/utils/Parser.java b/android/src/main/java/rnxmpp/utils/Parser.java index dafcc79..161ab18 100644 --- a/android/src/main/java/rnxmpp/utils/Parser.java +++ b/android/src/main/java/rnxmpp/utils/Parser.java @@ -65,12 +65,11 @@ static WritableMap parse(Node node) throws JSONException { childArray.pushMap(Arguments.fromBundle(Arguments.toBundle(writableMap.getMap(childNode.getNodeName())))); childArray.pushMap(parse(childNode)); writableMap.putArray(childNode.getNodeName(), childArray); - } - if (writableMap.hasKey(childNode.getNodeName())){ + } else if (writableMap.hasKey(childNode.getNodeName()) && writableMap.getType(childNode.getNodeName()).equals(ReadableType.Array)){ WritableArray writableArray = fromArray(writableMap.getArray(childNode.getNodeName())); writableArray.pushMap(parse(childNode)); writableMap.putArray(childNode.getNodeName(), writableArray); - }else{ + } else { NodeList checkTextChildNodes = childNode.getChildNodes(); if (checkTextChildNodes.getLength() == 1 && checkTextChildNodes.item(0).getNodeName().equals("#text")){ writableMap.putString(childNode.getNodeName(), checkTextChildNodes.item(0).getNodeValue());