Skip to content

Commit 6183ab1

Browse files
committed
Send the type of the value over to the native side to simplify logic
1 parent 810282f commit 6183ab1

File tree

3 files changed

+59
-64
lines changed

3 files changed

+59
-64
lines changed

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

Lines changed: 45 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -197,80 +197,74 @@ private Query buildDatabaseQueryAtPathAndModifiers(final FirebaseDatabase fireba
197197
query = query.limitToFirst(limit);
198198
} else if (methStr.contains("equalTo")) {
199199
String value = strArr[1];
200-
String key = strArr.length >= 3 ? strArr[2] : null;
201-
try {
200+
String type = strArr[2];
201+
if ("number".equals(type)) {
202202
double doubleValue = Double.parseDouble(value);
203-
if (key == null) {
203+
if (strArr.length > 3) {
204+
query = query.equalTo(doubleValue, strArr[3]);
205+
} else {
204206
query = query.equalTo(doubleValue);
207+
}
208+
} else if ("boolean".equals(type)) {
209+
boolean booleanValue = Boolean.parseBoolean(value);
210+
if (strArr.length > 3) {
211+
query = query.equalTo(booleanValue, strArr[3] );
205212
} else {
206-
query = query.equalTo(doubleValue, key);
213+
query = query.equalTo(booleanValue);
207214
}
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-
}
215+
} else {
216+
if (strArr.length > 3) {
217+
query = query.equalTo(value, strArr[3]);
216218
} else {
217-
if (key == null) {
218-
query = query.equalTo(value);
219-
} else {
220-
query = query.equalTo(value, key);
221-
}
219+
query = query.equalTo(value);
222220
}
223221
}
224222
} else if (methStr.contains("endAt")) {
225223
String value = strArr[1];
226-
String key = strArr.length >= 3 ? strArr[2] : null;
227-
try {
224+
String type = strArr[2];
225+
if ("number".equals(type)) {
228226
double doubleValue = Double.parseDouble(value);
229-
if (key == null) {
227+
if (strArr.length > 3) {
228+
query = query.endAt(doubleValue, strArr[3]);
229+
} else {
230230
query = query.endAt(doubleValue);
231+
}
232+
} else if ("boolean".equals(type)) {
233+
boolean booleanValue = Boolean.parseBoolean(value);
234+
if (strArr.length > 3) {
235+
query = query.endAt(booleanValue, strArr[3] );
231236
} else {
232-
query = query.endAt(doubleValue, key);
237+
query = query.endAt(booleanValue);
233238
}
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-
}
239+
} else {
240+
if (strArr.length > 3) {
241+
query = query.endAt(value, strArr[3]);
242242
} else {
243-
if (key == null) {
244-
query = query.endAt(value);
245-
} else {
246-
query = query.endAt(value, key);
247-
}
243+
query = query.endAt(value);
248244
}
249245
}
250246
} else if (methStr.contains("startAt")) {
251247
String value = strArr[1];
252-
String key = strArr.length >= 3 ? strArr[2] : null;
253-
try {
248+
String type = strArr[2];
249+
if ("number".equals(type)) {
254250
double doubleValue = Double.parseDouble(value);
255-
if (key == null) {
251+
if (strArr.length > 3) {
252+
query = query.startAt(doubleValue, strArr[3]);
253+
} else {
256254
query = query.startAt(doubleValue);
255+
}
256+
} else if ("boolean".equals(type)) {
257+
boolean booleanValue = Boolean.parseBoolean(value);
258+
if (strArr.length > 3) {
259+
query = query.startAt(booleanValue, strArr[3] );
257260
} else {
258-
query = query.startAt(doubleValue, key);
261+
query = query.startAt(booleanValue);
259262
}
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-
}
263+
} else {
264+
if (strArr.length > 3) {
265+
query = query.startAt(value, strArr[3]);
268266
} else {
269-
if (key == null) {
270-
query = query.startAt(value);
271-
} else {
272-
query = query.startAt(value, key);
273-
}
267+
query = query.startAt(value);
274268
}
275269
}
276270
}

ios/Firestack/FirestackDatabase.m

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,9 @@ - (FIRDatabaseQuery *) buildQueryAtPathWithModifiers:(FIRDatabase*) database
223223
} else if ([str containsString:@"equalTo"]) {
224224
NSArray *args = [str componentsSeparatedByString:@":"];
225225
int size = (int)[args count];;
226-
id value = [self getIdValue:args[1]];
227-
if (size > 2) {
228-
NSString *key = args[2];
226+
id value = [self getIdValue:args[1] type:args[2]];
227+
if (size > 3) {
228+
NSString *key = args[3];
229229
query = [query queryEqualToValue:value
230230
childKey:key];
231231
} else {
@@ -234,20 +234,20 @@ - (FIRDatabaseQuery *) buildQueryAtPathWithModifiers:(FIRDatabase*) database
234234
} else if ([str containsString:@"endAt"]) {
235235
NSArray *args = [str componentsSeparatedByString:@":"];
236236
int size = (int)[args count];;
237-
id value = [self getIdValue:args[1]];
238-
if (size > 2) {
239-
NSString *key = args[2];
237+
id value = [self getIdValue:args[1] type:args[2]];
238+
if (size > 3) {
239+
NSString *key = args[3];
240240
query = [query queryEndingAtValue:value
241241
childKey:key];
242242
} else {
243243
query = [query queryEndingAtValue:value];
244244
}
245245
} else if ([str containsString:@"startAt"]) {
246246
NSArray *args = [str componentsSeparatedByString:@":"];
247-
id value = [self getIdValue:args[1]];
247+
id value = [self getIdValue:args[1] type:args[2]];
248248
int size = (int)[args count];;
249-
if (size > 2) {
250-
NSString *key = args[2];
249+
if (size > 3) {
250+
NSString *key = args[3];
251251
query = [query queryStartingAtValue:value
252252
childKey:key];
253253
} else {
@@ -260,10 +260,11 @@ - (FIRDatabaseQuery *) buildQueryAtPathWithModifiers:(FIRDatabase*) database
260260
}
261261

262262
- (id) getIdValue:(NSString *) value
263+
type:(NSString *) type
263264
{
264-
if (value.integerValue != nil) {
265+
if ([type isEqualToString:@"number"]) {
265266
return [NSNumber numberWithInteger:value.integerValue];
266-
} else if ([value isEqualToString:@"true"] || [value isEqualToString:@"false"]) {
267+
} else if ([type isEqualToString:@"boolean"]) {
267268
return [NSNumber numberWithBool:value.boolValue];
268269
} else {
269270
return value;

lib/modules/database/query.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ export default class Query extends ReferenceBase {
4141

4242
setFilter(name: string, value: any, key?:string) {
4343
if (key) {
44-
this.modifiers.push(name + ':' + value + ':' + key);
44+
this.modifiers.push(name + ':' + value + ':' + (typeof value) + ':' + key);
4545
} else {
46-
this.modifiers.push(name + ':' + value);
46+
this.modifiers.push(name + ':' + value + ':' + (typeof value));
4747
}
4848
}
4949

0 commit comments

Comments
 (0)