Browse Source

parsers, bridgeUtils

Daniel Zlotin 8 years ago
parent
commit
8e49cd7e91

+ 68
- 0
android/app/src/main/java/com/reactnativenavigation/bridge/BridgeUtils.java View File

@@ -0,0 +1,68 @@
1
+package com.reactnativenavigation.bridge;
2
+
3
+import android.os.Bundle;
4
+
5
+import com.facebook.react.bridge.ReadableArray;
6
+import com.facebook.react.bridge.ReadableMap;
7
+import com.facebook.react.bridge.ReadableMapKeySetIterator;
8
+
9
+public class BridgeUtils {
10
+    public static Bundle toBundle(ReadableMap map) {
11
+        Bundle bundle = new Bundle();
12
+        ReadableMapKeySetIterator it = map.keySetIterator();
13
+        while (it.hasNextKey()) {
14
+            String key = it.nextKey();
15
+            switch (map.getType(key)) {
16
+                case Null:
17
+                    break;
18
+                case Boolean:
19
+                    bundle.putBoolean(key, map.getBoolean(key));
20
+                    break;
21
+                case Number:
22
+                    bundle.putDouble(key, map.getDouble(key));
23
+                    break;
24
+                case String:
25
+                    bundle.putString(key, map.getString(key));
26
+                    break;
27
+                case Map:
28
+                    bundle.putBundle(key, toBundle(map.getMap(key)));
29
+                    break;
30
+                case Array:
31
+                    bundle.putBundle(key, toBundle(map.getArray(key)));
32
+                    break;
33
+                default:
34
+                    break;
35
+            }
36
+        }
37
+        return bundle;
38
+    }
39
+
40
+    public static Bundle toBundle(ReadableArray array) {
41
+        Bundle bundle = new Bundle();
42
+        for (int i = 0; i < array.size(); i++) {
43
+            String key = String.valueOf(i);
44
+            switch (array.getType(i)) {
45
+                case Null:
46
+                    break;
47
+                case Boolean:
48
+                    bundle.putBoolean(key, array.getBoolean(i));
49
+                    break;
50
+                case Number:
51
+                    bundle.putDouble(key, array.getDouble(i));
52
+                    break;
53
+                case String:
54
+                    bundle.putString(key, array.getString(i));
55
+                    break;
56
+                case Map:
57
+                    bundle.putBundle(key, toBundle(array.getMap(i)));
58
+                    break;
59
+                case Array:
60
+                    bundle.putBundle(key, toBundle(array.getArray(i)));
61
+                    break;
62
+                default:
63
+                    break;
64
+            }
65
+        }
66
+        return bundle;
67
+    }
68
+}

+ 4
- 0
android/app/src/main/java/com/reactnativenavigation/bridge/parsers/ActivityParamsParser.java View File

@@ -0,0 +1,4 @@
1
+package com.reactnativenavigation.bridge.parsers;
2
+
3
+public class ActivityParamsParser implements ParamsParser<ActivityParams> {
4
+}

+ 7
- 0
android/app/src/main/java/com/reactnativenavigation/bridge/parsers/ParamsParser.java View File

@@ -0,0 +1,7 @@
1
+package com.reactnativenavigation.bridge.parsers;
2
+
3
+import com.facebook.react.bridge.ReadableMap;
4
+
5
+public interface ParamsParser<T> {
6
+    T parse(ReadableMap params);
7
+}