Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 2c85344

Browse files
committed
Bug fixes to Android implementation
1 parent e799f30 commit 2c85344

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

packages/firebase_database/android/src/main/java/io/flutter/plugins/firebase/database/FirebaseDatabasePlugin.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ private Query getQuery(Map<String, Object> arguments) {
5656
Query query = getReference(arguments);
5757
@SuppressWarnings("unchecked")
5858
Map<String, Object> parameters = (Map<String, Object>) arguments.get("parameters");
59+
if (parameters == null)
60+
return query;
5961
Object orderBy = parameters.get("orderBy");
6062
if ("child".equals(orderBy)) {
6163
query = query.orderByChild((String) parameters.get("orderByChildKey"));
@@ -73,8 +75,10 @@ private Query getQuery(Map<String, Object> arguments) {
7375
query = query.startAt((Boolean) startAt, startAtKey);
7476
} else if (startAt instanceof String) {
7577
query = query.startAt((String) startAt, startAtKey);
76-
} else {
77-
query = query.startAt((Double) startAt, startAtKey);
78+
} else if (startAt instanceof Double) {
79+
query = query.endAt((Double) startAt);
80+
} else if (startAt instanceof Integer) {
81+
query = query.startAt((int) startAt);
7882
}
7983
}
8084
if (parameters.containsKey("endAt")) {
@@ -84,25 +88,29 @@ private Query getQuery(Map<String, Object> arguments) {
8488
query = query.endAt((Boolean) endAt, endAtKey);
8589
} else if (endAt instanceof String) {
8690
query = query.endAt((String) endAt, endAtKey);
87-
} else {
88-
query = query.endAt((Double) endAt, endAtKey);
91+
} else if (endAt instanceof Double) {
92+
query = query.endAt((Double) endAt);
93+
} else if (endAt instanceof Integer) {
94+
query = query.endAt((int) endAt);
8995
}
9096
}
91-
if (arguments.containsKey("equalTo")) {
92-
Object equalTo = arguments.get("equalTo");
97+
if (parameters.containsKey("equalTo")) {
98+
Object equalTo = parameters.get("equalTo");
9399
if (equalTo instanceof Boolean) {
94100
query = query.equalTo((Boolean) equalTo);
95101
} else if (equalTo instanceof String) {
96102
query = query.equalTo((String) equalTo);
97-
} else {
103+
} else if (equalTo instanceof Double) {
98104
query = query.equalTo((Double) equalTo);
105+
} else if (equalTo instanceof Integer) {
106+
query = query.equalTo((int) equalTo);
99107
}
100108
}
101-
if (arguments.containsKey("limitToFirst")) {
102-
query = query.limitToFirst((int) arguments.get("limitToFirst"));
109+
if (parameters.containsKey("limitToFirst")) {
110+
query = query.limitToFirst((int) parameters.get("limitToFirst"));
103111
}
104-
if (arguments.containsKey("limitToLast")) {
105-
query = query.limitToLast((int) arguments.get("limitToLast"));
112+
if (parameters.containsKey("limitToLast")) {
113+
query = query.limitToLast((int) parameters.get("limitToLast"));
106114
}
107115
return query;
108116
}

packages/firebase_database/lib/src/query.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class Query {
9393
/// than or equal to the given key.
9494
Query startAt(dynamic value, { String key }) {
9595
assert(!_parameters.containsKey('startAt'));
96+
assert(value is String || value is bool || value is double || value is int);
9697
return _copyWithParameters(
9798
<String, dynamic>{ 'startAt': value, 'startAtKey': key },
9899
);
@@ -104,6 +105,7 @@ class Query {
104105
/// than or equal to the given key.
105106
Query endAt(dynamic value, { String key }) {
106107
assert(!_parameters.containsKey('endAt'));
108+
assert(value is String || value is bool || value is double || value is int);
107109
return _copyWithParameters(
108110
<String, dynamic>{ 'endAt': value, 'endAtKey': key },
109111
);
@@ -115,6 +117,7 @@ class Query {
115117
/// If a key is provided, there is at most one such child as names are unique.
116118
Query equalTo(dynamic value, { String key }) {
117119
assert(!_parameters.containsKey('equalTo'));
120+
assert(value is String || value is bool || value is double || value is int);
118121
return _copyWithParameters(
119122
<String, dynamic>{ 'equalTo': value, 'equalToKey': key },
120123
);

0 commit comments

Comments
 (0)