2323#import " Firestore/Source/API/FIRDocumentReference+Internal.h"
2424#import " Firestore/Source/API/FIRFirestore+Internal.h"
2525#import " Firestore/Source/API/FIRQuery+Internal.h"
26- #import " Firestore/Source/API/FIRQuery_Init.h"
2726#import " Firestore/Source/Core/FSTQuery.h"
2827
2928#include " Firestore/core/src/firebase/firestore/api/input_validation.h"
3029#include " Firestore/core/src/firebase/firestore/model/document_key.h"
3130#include " Firestore/core/src/firebase/firestore/model/resource_path.h"
31+ #include " Firestore/core/src/firebase/firestore/util/hashing.h"
3232#include " Firestore/core/src/firebase/firestore/util/string_apple.h"
3333
3434namespace util = firebase::firestore::util;
@@ -44,9 +44,7 @@ - (instancetype)initWithPath:(const ResourcePath &)path
4444 firestore : (FIRFirestore *)firestore NS_DESIGNATED_INITIALIZER;
4545
4646// Mark the super class designated initializer unavailable.
47- - (instancetype )initWithQuery : (FSTQuery *)query
48- firestore : (FIRFirestore *)firestore
49- __attribute__((unavailable(" Use the initWithPath constructor of FIRCollectionReference." )));
47+ - (instancetype )initWithQuery : (api::Query &&)query NS_UNAVAILABLE;
5048@end
5149
5250@implementation FIRCollectionReference (Internal)
@@ -63,12 +61,14 @@ - (instancetype)initWithPath:(const ResourcePath &)path firestore:(FIRFirestore
6361 " number of segments, but %s has %s" ,
6462 path.CanonicalString (), path.size ());
6563 }
66- self = [super initWithQuery: [FSTQuery queryWithPath: path] firestore: firestore];
64+
65+ api::Query query ([FSTQuery queryWithPath: path], firestore.wrapped );
66+ self = [super initWithQuery: std: :move (query)];
6767 return self;
6868}
6969
7070// Override the designated initializer from the super class.
71- - (instancetype )initWithQuery : (FSTQuery *) query firestore : (FIRFirestore *) firestore {
71+ - (instancetype )initWithQuery : (api::Query &&) query {
7272 HARD_FAIL (" Use FIRCollectionReference initWithPath: initializer." );
7373}
7474
@@ -87,9 +87,7 @@ - (BOOL)isEqualToReference:(nullable FIRCollectionReference *)reference {
8787}
8888
8989- (NSUInteger )hash {
90- NSUInteger hash = [self .firestore hash ];
91- hash = hash * 31u + [self .query hash ];
92- return hash;
90+ return util::Hash (self.firestore , self.query );
9391}
9492
9593- (NSString *)collectionID {
0 commit comments