forked from Ivasoft/mattermost-mobile
[Gekidou] Android - Fetch and store data on push notification receipt (#5662)
* 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>
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user