forked from Ivasoft/mattermost-mobile
* Android refactor push notifications to store data or send to JS for processing * remove blank line * rename variable
123 lines
4.2 KiB
Java
123 lines
4.2 KiB
Java
package com.mattermost.helpers;
|
|
|
|
import com.facebook.react.bridge.Arguments;
|
|
import com.facebook.react.bridge.ReadableArray;
|
|
import com.facebook.react.bridge.ReadableMap;
|
|
import com.facebook.react.bridge.ReadableType;
|
|
import com.facebook.react.bridge.WritableArray;
|
|
|
|
import java.util.Map;
|
|
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
import org.json.JSONException;
|
|
|
|
public class ReadableArrayUtils {
|
|
public static JSONArray toJSONArray(ReadableArray readableArray) throws JSONException {
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
|
for (int i = 0; i < readableArray.size(); i++) {
|
|
ReadableType type = readableArray.getType(i);
|
|
|
|
switch (type) {
|
|
case Null:
|
|
jsonArray.put(i, null);
|
|
break;
|
|
case Boolean:
|
|
jsonArray.put(i, readableArray.getBoolean(i));
|
|
break;
|
|
case Number:
|
|
jsonArray.put(i, readableArray.getDouble(i));
|
|
break;
|
|
case String:
|
|
jsonArray.put(i, readableArray.getString(i));
|
|
break;
|
|
case Map:
|
|
jsonArray.put(i, ReadableMapUtils.toJSONObject(readableArray.getMap(i)));
|
|
break;
|
|
case Array:
|
|
jsonArray.put(i, ReadableArrayUtils.toJSONArray(readableArray.getArray(i)));
|
|
break;
|
|
}
|
|
}
|
|
|
|
return jsonArray;
|
|
}
|
|
|
|
public static Object[] toArray(JSONArray jsonArray) throws JSONException {
|
|
Object[] array = new Object[jsonArray.length()];
|
|
|
|
for (int i = 0; i < jsonArray.length(); i++) {
|
|
Object value = jsonArray.get(i);
|
|
|
|
if (value instanceof JSONObject) {
|
|
value = ReadableMapUtils.toMap((JSONObject) value);
|
|
}
|
|
if (value instanceof JSONArray) {
|
|
value = ReadableArrayUtils.toArray((JSONArray) value);
|
|
}
|
|
|
|
array[i] = value;
|
|
}
|
|
|
|
return array;
|
|
}
|
|
|
|
public static Object[] toArray(ReadableArray readableArray) {
|
|
Object[] array = new Object[readableArray.size()];
|
|
|
|
for (int i = 0; i < readableArray.size(); i++) {
|
|
ReadableType type = readableArray.getType(i);
|
|
|
|
switch (type) {
|
|
case Null:
|
|
array[i] = null;
|
|
break;
|
|
case Boolean:
|
|
array[i] = readableArray.getBoolean(i);
|
|
break;
|
|
case Number:
|
|
array[i] = readableArray.getDouble(i);
|
|
break;
|
|
case String:
|
|
array[i] = readableArray.getString(i);
|
|
break;
|
|
case Map:
|
|
array[i] = ReadableMapUtils.toMap(readableArray.getMap(i));
|
|
break;
|
|
case Array:
|
|
array[i] = ReadableArrayUtils.toArray(readableArray.getArray(i));
|
|
break;
|
|
}
|
|
}
|
|
|
|
return array;
|
|
}
|
|
|
|
public static WritableArray toWritableArray(Object[] array) {
|
|
WritableArray writableArray = Arguments.createArray();
|
|
|
|
for (Object value : array) {
|
|
if (value == null) {
|
|
writableArray.pushNull();
|
|
} else if (value instanceof Boolean) {
|
|
writableArray.pushBoolean((Boolean) value);
|
|
} else if (value instanceof Double) {
|
|
writableArray.pushDouble((Double) value);
|
|
} else if (value instanceof Integer) {
|
|
writableArray.pushInt((Integer) value);
|
|
} else if (value instanceof String) {
|
|
writableArray.pushString((String) value);
|
|
} else if (value instanceof Map) {
|
|
writableArray.pushMap(ReadableMapUtils.toWritableMap((Map<String, Object>) value));
|
|
} else if (value instanceof ReadableMap) {
|
|
writableArray.pushMap((ReadableMap) value);
|
|
}else if (value.getClass().isArray()) {
|
|
writableArray.pushArray(ReadableArrayUtils.toWritableArray((Object[]) value));
|
|
}
|
|
}
|
|
|
|
return writableArray;
|
|
}
|
|
}
|