Skip to content

Commit e771325

Browse files
committed
Fix issue with number and boolean data types being used with startAt/endAt/equalTo in Java database module
1 parent be896ba commit e771325

File tree

1 file changed

+66
-12
lines changed

1 file changed

+66
-12
lines changed

android/src/main/java/io/fullstack/firestack/database/FirestackDatabaseReference.java

Lines changed: 66 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -198,26 +198,80 @@ private Query buildDatabaseQueryAtPathAndModifiers(final FirebaseDatabase fireba
198198
} else if (methStr.contains("equalTo")) {
199199
String value = strArr[1];
200200
String key = strArr.length >= 3 ? strArr[2] : null;
201-
if (key == null) {
202-
query = query.equalTo(value);
203-
} else {
204-
query = query.equalTo(value, key);
201+
try {
202+
double doubleValue = Double.parseDouble(value);
203+
if (key == null) {
204+
query = query.equalTo(doubleValue);
205+
} else {
206+
query = query.equalTo(doubleValue, key);
207+
}
208+
} catch (NumberFormatException ex) {
209+
if ("true".equals(value) || "false".equals(value)) {
210+
boolean booleanValue = Boolean.parseBoolean(value);
211+
if (key == null) {
212+
query = query.equalTo(booleanValue);
213+
} else {
214+
query = query.equalTo(booleanValue, key);
215+
}
216+
} else {
217+
if (key == null) {
218+
query = query.equalTo(value);
219+
} else {
220+
query = query.equalTo(value, key);
221+
}
222+
}
205223
}
206224
} else if (methStr.contains("endAt")) {
207225
String value = strArr[1];
208226
String key = strArr.length >= 3 ? strArr[2] : null;
209-
if (key == null) {
210-
query = query.endAt(value);
211-
} else {
212-
query = query.endAt(value, key);
227+
try {
228+
double doubleValue = Double.parseDouble(value);
229+
if (key == null) {
230+
query = query.endAt(doubleValue);
231+
} else {
232+
query = query.endAt(doubleValue, key);
233+
}
234+
} catch (NumberFormatException ex) {
235+
if ("true".equals(value) || "false".equals(value)) {
236+
boolean booleanValue = Boolean.parseBoolean(value);
237+
if (key == null) {
238+
query = query.endAt(booleanValue);
239+
} else {
240+
query = query.endAt(booleanValue, key);
241+
}
242+
} else {
243+
if (key == null) {
244+
query = query.endAt(value);
245+
} else {
246+
query = query.endAt(value, key);
247+
}
248+
}
213249
}
214250
} else if (methStr.contains("startAt")) {
215251
String value = strArr[1];
216252
String key = strArr.length >= 3 ? strArr[2] : null;
217-
if (key == null) {
218-
query = query.startAt(value);
219-
} else {
220-
query = query.startAt(value, key);
253+
try {
254+
double doubleValue = Double.parseDouble(value);
255+
if (key == null) {
256+
query = query.startAt(doubleValue);
257+
} else {
258+
query = query.startAt(doubleValue, key);
259+
}
260+
} catch (NumberFormatException ex) {
261+
if ("true".equals(value) || "false".equals(value)) {
262+
boolean booleanValue = Boolean.parseBoolean(value);
263+
if (key == null) {
264+
query = query.startAt(booleanValue);
265+
} else {
266+
query = query.startAt(booleanValue, key);
267+
}
268+
} else {
269+
if (key == null) {
270+
query = query.startAt(value);
271+
} else {
272+
query = query.startAt(value, key);
273+
}
274+
}
221275
}
222276
}
223277
}

0 commit comments

Comments
 (0)