diff options
Diffstat (limited to 'Firestore/Source/API/FIRQuery.mm')
-rw-r--r-- | Firestore/Source/API/FIRQuery.mm | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/Firestore/Source/API/FIRQuery.mm b/Firestore/Source/API/FIRQuery.mm index 08c912d..cdf8bc9 100644 --- a/Firestore/Source/API/FIRQuery.mm +++ b/Firestore/Source/API/FIRQuery.mm @@ -487,26 +487,13 @@ addSnapshotListenerInternalWithOptions:(FSTListenOptions *)internalOptions fieldValue = [self.firestore.dataConverter parsedQueryValue:value]; } - id<FSTFilter> filter; - if ([fieldValue isEqual:[FSTNullValue nullValue]]) { - if (filterOperator != FSTRelationFilterOperatorEqual) { - FSTThrowInvalidUsage(@"InvalidQueryException", - @"Invalid Query. You can only perform equality comparisons on nil / " - "NSNull."); - } - filter = [[FSTNullFilter alloc] initWithField:fieldPath]; - } else if ([fieldValue isEqual:[FSTDoubleValue nanValue]]) { - if (filterOperator != FSTRelationFilterOperatorEqual) { - FSTThrowInvalidUsage(@"InvalidQueryException", - @"Invalid Query. You can only perform equality comparisons on NaN."); - } - filter = [[FSTNanFilter alloc] initWithField:fieldPath]; - } else { - filter = [FSTRelationFilter filterWithField:fieldPath - filterOperator:filterOperator - value:fieldValue]; - [self validateNewRelationFilter:filter]; + FSTFilter *filter = + [FSTFilter filterWithField:fieldPath filterOperator:filterOperator value:fieldValue]; + + if ([filter isKindOfClass:[FSTRelationFilter class]]) { + [self validateNewRelationFilter:(FSTRelationFilter *)filter]; } + return [FIRQuery referenceWithQuery:[self.query queryByAddingFilter:filter] firestore:self.firestore]; } |