@@ -58,25 +58,27 @@ public static WritableMap dataSnapshotToMap(String name,
5858 data .putBoolean ("hasChildren" , dataSnapshot .hasChildren ());
5959
6060 data .putDouble ("childrenCount" , dataSnapshot .getChildrenCount ());
61- if (!dataSnapshot .hasChildren () && dataSnapshot .getValue () != null ) {
62- String type = dataSnapshot .getValue ().getClass ().getName ();
61+ if (!dataSnapshot .hasChildren ()) {
62+ Object value = dataSnapshot .getValue ();
63+ String type = value !=null ? value .getClass ().getName () : "" ;
6364 switch (type ) {
6465 case "java.lang.Boolean" :
65- data .putBoolean ("value" , (Boolean ) dataSnapshot . getValue () );
66+ data .putBoolean ("value" , (Boolean )value );
6667 break ;
6768 case "java.lang.Long" :
68- data .putInt ("value" ,(Integer )(((Long ) dataSnapshot .getValue ()).intValue ()));
69+ Long longVal = (Long ) value ;
70+ data .putDouble ("value" , (double )longVal );
6971 break ;
7072 case "java.lang.Double" :
71- data .putDouble ("value" ,(Double ) dataSnapshot . getValue () );
73+ data .putDouble ("value" , (Double ) value );
7274 break ;
7375 case "java.lang.String" :
74- data .putString ("value" ,(String ) dataSnapshot . getValue () );
76+ data .putString ("value" ,(String ) value );
7577 break ;
7678 default :
7779 data .putString ("value" , null );
7880 }
79- }else {
81+ } else {
8082 WritableMap valueMap = FirestackUtils .castSnapshotValue (dataSnapshot );
8183 data .putMap ("value" , valueMap );
8284 }
@@ -104,8 +106,9 @@ public static <Any> Any castSnapshotValue(DataSnapshot snapshot) {
104106 case "java.lang.Boolean" :
105107 data .putBoolean (child .getKey (), (Boolean ) castedChild );
106108 break ;
107- case "java.lang.Integer" :
108- data .putInt (child .getKey (), (Integer ) castedChild );
109+ case "java.lang.Long" :
110+ Long longVal = (Long ) castedChild ;
111+ data .putDouble (child .getKey (), (double )longVal );
109112 break ;
110113 case "java.lang.Double" :
111114 data .putDouble (child .getKey (), (Double ) castedChild );
@@ -116,6 +119,9 @@ public static <Any> Any castSnapshotValue(DataSnapshot snapshot) {
116119 case "com.facebook.react.bridge.WritableNativeMap" :
117120 data .putMap (child .getKey (), (WritableMap ) castedChild );
118121 break ;
122+ default :
123+ Log .w (TAG , "Invalid type: " +type );
124+ break ;
119125 }
120126 }
121127 return (Any ) data ;
@@ -124,19 +130,19 @@ public static <Any> Any castSnapshotValue(DataSnapshot snapshot) {
124130 String type = snapshot .getValue ().getClass ().getName ();
125131 switch (type ) {
126132 case "java.lang.Boolean" :
127- return (Any )(( Boolean ) snapshot .getValue ());
133+ return (Any )(snapshot .getValue ());
128134 case "java.lang.Long" :
129- return (Any )(( Integer )((( Long ) snapshot .getValue ()). intValue () ));
135+ return (Any )(snapshot .getValue ());
130136 case "java.lang.Double" :
131- return (Any )(( Double ) snapshot .getValue ());
137+ return (Any )(snapshot .getValue ());
132138 case "java.lang.String" :
133- return (Any )(( String ) snapshot .getValue ());
139+ return (Any )(snapshot .getValue ());
134140 default :
141+ Log .w (TAG , "Invalid type: " +type );
135142 return (Any ) null ;
136143 }
137- } else {
138- return (Any ) null ;
139144 }
145+ return (Any ) null ;
140146 }
141147 }
142148
0 commit comments