@@ -35,7 +35,7 @@ public static void todoNote(final String tag, final String name, final Callback
3535 /**
3636 * send a JS event
3737 **/
38- public static void sendEvent (final ReactContext context ,
38+ public static void sendEvent (final ReactContext context ,
3939 String eventName ,
4040 WritableMap params ) {
4141 context
@@ -52,9 +52,28 @@ public static WritableMap dataSnapshotToMap(String name, DataSnapshot dataSnapsh
5252 data .putBoolean ("hasChildren" , dataSnapshot .hasChildren ());
5353
5454 data .putDouble ("childrenCount" , dataSnapshot .getChildrenCount ());
55-
56- WritableMap valueMap = FirestackUtils .castSnapshotValue (dataSnapshot );
57- data .putMap ("value" , valueMap );
55+ if (!dataSnapshot .hasChildren () && dataSnapshot .getValue () != null ) {
56+ String type = dataSnapshot .getValue ().getClass ().getName ();
57+ switch (type ) {
58+ case "java.lang.Boolean" :
59+ data .putBoolean ("value" , (Boolean ) dataSnapshot .getValue ());
60+ break ;
61+ case "java.lang.Long" :
62+ data .putInt ("value" ,(Integer )(((Long ) dataSnapshot .getValue ()).intValue ()));
63+ break ;
64+ case "java.lang.Double" :
65+ data .putDouble ("value" ,(Double ) dataSnapshot .getValue ());
66+ break ;
67+ case "java.lang.String" :
68+ data .putString ("value" ,(String ) dataSnapshot .getValue ());
69+ break ;
70+ default :
71+ data .putString ("value" , null );
72+ }
73+ }else {
74+ WritableMap valueMap = FirestackUtils .castSnapshotValue (dataSnapshot );
75+ data .putMap ("value" , valueMap );
76+ }
5877
5978 Object priority = dataSnapshot .getPriority ();
6079 if (priority == null ) {
@@ -176,4 +195,4 @@ public static List<Object> recursivelyDeconstructReadableArray(ReadableArray rea
176195 }
177196 return deconstructedList ;
178197 }
179- }
198+ }
0 commit comments