@@ -58,25 +58,27 @@ public static WritableMap dataSnapshotToMap(String name,
58
58
data .putBoolean ("hasChildren" , dataSnapshot .hasChildren ());
59
59
60
60
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 () : "" ;
63
64
switch (type ) {
64
65
case "java.lang.Boolean" :
65
- data .putBoolean ("value" , (Boolean ) dataSnapshot . getValue () );
66
+ data .putBoolean ("value" , (Boolean )value );
66
67
break ;
67
68
case "java.lang.Long" :
68
- data .putInt ("value" ,(Integer )(((Long ) dataSnapshot .getValue ()).intValue ()));
69
+ Long longVal = (Long ) value ;
70
+ data .putDouble ("value" , (double )longVal );
69
71
break ;
70
72
case "java.lang.Double" :
71
- data .putDouble ("value" ,(Double ) dataSnapshot . getValue () );
73
+ data .putDouble ("value" , (Double ) value );
72
74
break ;
73
75
case "java.lang.String" :
74
- data .putString ("value" ,(String ) dataSnapshot . getValue () );
76
+ data .putString ("value" ,(String ) value );
75
77
break ;
76
78
default :
77
79
data .putString ("value" , null );
78
80
}
79
- }else {
81
+ } else {
80
82
WritableMap valueMap = FirestackUtils .castSnapshotValue (dataSnapshot );
81
83
data .putMap ("value" , valueMap );
82
84
}
@@ -104,8 +106,9 @@ public static <Any> Any castSnapshotValue(DataSnapshot snapshot) {
104
106
case "java.lang.Boolean" :
105
107
data .putBoolean (child .getKey (), (Boolean ) castedChild );
106
108
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 );
109
112
break ;
110
113
case "java.lang.Double" :
111
114
data .putDouble (child .getKey (), (Double ) castedChild );
@@ -116,6 +119,9 @@ public static <Any> Any castSnapshotValue(DataSnapshot snapshot) {
116
119
case "com.facebook.react.bridge.WritableNativeMap" :
117
120
data .putMap (child .getKey (), (WritableMap ) castedChild );
118
121
break ;
122
+ default :
123
+ Log .w (TAG , "Invalid type: " +type );
124
+ break ;
119
125
}
120
126
}
121
127
return (Any ) data ;
@@ -124,19 +130,19 @@ public static <Any> Any castSnapshotValue(DataSnapshot snapshot) {
124
130
String type = snapshot .getValue ().getClass ().getName ();
125
131
switch (type ) {
126
132
case "java.lang.Boolean" :
127
- return (Any )(( Boolean ) snapshot .getValue ());
133
+ return (Any )(snapshot .getValue ());
128
134
case "java.lang.Long" :
129
- return (Any )(( Integer )((( Long ) snapshot .getValue ()). intValue () ));
135
+ return (Any )(snapshot .getValue ());
130
136
case "java.lang.Double" :
131
- return (Any )(( Double ) snapshot .getValue ());
137
+ return (Any )(snapshot .getValue ());
132
138
case "java.lang.String" :
133
- return (Any )(( String ) snapshot .getValue ());
139
+ return (Any )(snapshot .getValue ());
134
140
default :
141
+ Log .w (TAG , "Invalid type: " +type );
135
142
return (Any ) null ;
136
143
}
137
- } else {
138
- return (Any ) null ;
139
144
}
145
+ return (Any ) null ;
140
146
}
141
147
}
142
148
0 commit comments