forked from Ivasoft/mattermost-mobile
* WIP * Latest network client * Init DatabaseHelper and Network * Add request and query functions * Fetch posts when push notification is received on Android Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
136 lines
4.8 KiB
Java
136 lines
4.8 KiB
Java
package com.mattermost.helpers;
|
|
|
|
import com.facebook.react.bridge.Arguments;
|
|
import com.facebook.react.bridge.ReadableMap;
|
|
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
import com.facebook.react.bridge.ReadableType;
|
|
import com.facebook.react.bridge.WritableMap;
|
|
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
|
|
public class ReadableMapUtils {
|
|
public static JSONObject toJSONObject(ReadableMap readableMap) throws JSONException {
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
|
|
|
|
while (iterator.hasNextKey()) {
|
|
String key = iterator.nextKey();
|
|
ReadableType type = readableMap.getType(key);
|
|
|
|
switch (type) {
|
|
case Null:
|
|
jsonObject.put(key, null);
|
|
break;
|
|
case Boolean:
|
|
jsonObject.put(key, readableMap.getBoolean(key));
|
|
break;
|
|
case Number:
|
|
jsonObject.put(key, readableMap.getDouble(key));
|
|
break;
|
|
case String:
|
|
jsonObject.put(key, readableMap.getString(key));
|
|
break;
|
|
case Map:
|
|
jsonObject.put(key, ReadableMapUtils.toJSONObject(readableMap.getMap(key)));
|
|
break;
|
|
case Array:
|
|
jsonObject.put(key, ReadableArrayUtils.toJSONArray(readableMap.getArray(key)));
|
|
break;
|
|
}
|
|
}
|
|
|
|
return jsonObject;
|
|
}
|
|
|
|
public static Map<String, Object> toMap(JSONObject jsonObject) throws JSONException {
|
|
Map<String, Object> map = new HashMap<>();
|
|
Iterator<String> iterator = jsonObject.keys();
|
|
|
|
while (iterator.hasNext()) {
|
|
String key = iterator.next();
|
|
Object value = jsonObject.get(key);
|
|
|
|
if (value instanceof JSONObject) {
|
|
value = ReadableMapUtils.toMap((JSONObject) value);
|
|
}
|
|
if (value instanceof JSONArray) {
|
|
value = ReadableArrayUtils.toArray((JSONArray) value);
|
|
}
|
|
|
|
map.put(key, value);
|
|
}
|
|
|
|
return map;
|
|
}
|
|
|
|
public static Map<String, Object> toMap(ReadableMap readableMap) {
|
|
Map<String, Object> map = new HashMap<>();
|
|
ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
|
|
|
|
while (iterator.hasNextKey()) {
|
|
String key = iterator.nextKey();
|
|
ReadableType type = readableMap.getType(key);
|
|
|
|
switch (type) {
|
|
case Null:
|
|
map.put(key, null);
|
|
break;
|
|
case Boolean:
|
|
map.put(key, readableMap.getBoolean(key));
|
|
break;
|
|
case Number:
|
|
map.put(key, readableMap.getDouble(key));
|
|
break;
|
|
case String:
|
|
map.put(key, readableMap.getString(key));
|
|
break;
|
|
case Map:
|
|
map.put(key, ReadableMapUtils.toMap(readableMap.getMap(key)));
|
|
break;
|
|
case Array:
|
|
map.put(key, ReadableArrayUtils.toArray(readableMap.getArray(key)));
|
|
break;
|
|
}
|
|
}
|
|
|
|
return map;
|
|
}
|
|
|
|
public static WritableMap toWritableMap(Map<String, Object> map) {
|
|
WritableMap writableMap = Arguments.createMap();
|
|
Iterator iterator = map.entrySet().iterator();
|
|
|
|
while (iterator.hasNext()) {
|
|
Map.Entry pair = (Map.Entry)iterator.next();
|
|
Object value = pair.getValue();
|
|
|
|
if (value == null) {
|
|
writableMap.putNull((String) pair.getKey());
|
|
} else if (value instanceof Boolean) {
|
|
writableMap.putBoolean((String) pair.getKey(), (Boolean) value);
|
|
} else if (value instanceof Double) {
|
|
writableMap.putDouble((String) pair.getKey(), (Double) value);
|
|
} else if (value instanceof Integer) {
|
|
writableMap.putInt((String) pair.getKey(), (Integer) value);
|
|
} else if (value instanceof String) {
|
|
writableMap.putString((String) pair.getKey(), (String) value);
|
|
} else if (value instanceof Map) {
|
|
writableMap.putMap((String) pair.getKey(), ReadableMapUtils.toWritableMap((Map<String, Object>) value));
|
|
} else if (value.getClass() != null && value.getClass().isArray()) {
|
|
writableMap.putArray((String) pair.getKey(), ReadableArrayUtils.toWritableArray((Object[]) value));
|
|
}
|
|
|
|
iterator.remove();
|
|
}
|
|
|
|
return writableMap;
|
|
}
|
|
}
|