diff options
Diffstat (limited to 'Firestore/Source/API/FIRFirestore.mm')
-rw-r--r-- | Firestore/Source/API/FIRFirestore.mm | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/Firestore/Source/API/FIRFirestore.mm b/Firestore/Source/API/FIRFirestore.mm index 10367bd..5e978cc 100644 --- a/Firestore/Source/API/FIRFirestore.mm +++ b/Firestore/Source/API/FIRFirestore.mm @@ -29,9 +29,7 @@ #import "Firestore/Source/API/FSTUserDataConverter.h" #import "Firestore/Source/Auth/FSTCredentialsProvider.h" -#import "Firestore/Source/Core/FSTDatabaseInfo.h" #import "Firestore/Source/Core/FSTFirestoreClient.h" -#import "Firestore/Source/Model/FSTDatabaseID.h" #import "Firestore/Source/Model/FSTDocumentKey.h" #import "Firestore/Source/Model/FSTPath.h" #import "Firestore/Source/Util/FSTAssert.h" @@ -39,13 +37,23 @@ #import "Firestore/Source/Util/FSTLogger.h" #import "Firestore/Source/Util/FSTUsageValidation.h" +#include "Firestore/core/src/firebase/firestore/core/database_info.h" +#include "Firestore/core/src/firebase/firestore/model/database_id.h" +#include "Firestore/core/src/firebase/firestore/util/string_apple.h" + +namespace util = firebase::firestore::util; +using firebase::firestore::core::DatabaseInfo; +using firebase::firestore::model::DatabaseId; + NS_ASSUME_NONNULL_BEGIN extern "C" NSString *const FIRFirestoreErrorDomain = @"FIRFirestoreErrorDomain"; -@interface FIRFirestore () +@interface FIRFirestore () { + /** The actual owned DatabaseId instance is allocated in FIRFirestore. */ + firebase::firestore::model::DatabaseId _databaseID; +} -@property(nonatomic, strong) FSTDatabaseID *databaseID; @property(nonatomic, strong) NSString *persistenceKey; @property(nonatomic, strong) id<FSTCredentialsProvider> credentialsProvider; @property(nonatomic, strong) FSTDispatchQueue *workerDispatchQueue; @@ -79,11 +87,13 @@ extern "C" NSString *const FIRFirestoreErrorDomain = @"FIRFirestoreErrorDomain"; @"Failed to get FirebaseApp instance. Please call FirebaseApp.configure() " @"before using Firestore"); } - return [self firestoreForApp:app database:kDefaultDatabaseID]; + return + [self firestoreForApp:app database:util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId)]; } + (instancetype)firestoreForApp:(FIRApp *)app { - return [self firestoreForApp:app database:kDefaultDatabaseID]; + return + [self firestoreForApp:app database:util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId)]; } // TODO(b/62410906): make this public @@ -97,7 +107,7 @@ extern "C" NSString *const FIRFirestoreErrorDomain = @"FIRFirestoreErrorDomain"; FSTThrowInvalidArgument( @"database identifier may not be nil. Use '%@' if you want the default " "database", - kDefaultDatabaseID); + util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId)); } NSString *key = [NSString stringWithFormat:@"%@|%@", app.name, database]; @@ -136,7 +146,7 @@ extern "C" NSString *const FIRFirestoreErrorDomain = @"FIRFirestoreErrorDomain"; workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue firebaseApp:(FIRApp *)app { if (self = [super init]) { - _databaseID = [FSTDatabaseID databaseIDWithProject:projectID database:database]; + _databaseID = DatabaseId(util::MakeStringView(projectID), util::MakeStringView(database)); FSTPreConverterBlock block = ^id _Nullable(id _Nullable input) { if ([input isKindOfClass:[FIRDocumentReference class]]) { FIRDocumentReference *documentReference = (FIRDocumentReference *)input; @@ -147,7 +157,7 @@ extern "C" NSString *const FIRFirestoreErrorDomain = @"FIRFirestoreErrorDomain"; } }; _dataConverter = - [[FSTUserDataConverter alloc] initWithDatabaseID:_databaseID preConverter:block]; + [[FSTUserDataConverter alloc] initWithDatabaseID:&_databaseID preConverter:block]; _persistenceKey = persistenceKey; _credentialsProvider = credentialsProvider; _workerDispatchQueue = workerDispatchQueue; @@ -193,15 +203,12 @@ extern "C" NSString *const FIRFirestoreErrorDomain = @"FIRFirestoreErrorDomain"; FSTAssert(_settings.host, @"FirestoreSettings.host cannot be nil."); FSTAssert(_settings.dispatchQueue, @"FirestoreSettings.dispatchQueue cannot be nil."); - FSTDatabaseInfo *databaseInfo = - [FSTDatabaseInfo databaseInfoWithDatabaseID:_databaseID - persistenceKey:_persistenceKey - host:_settings.host - sslEnabled:_settings.sslEnabled]; + const DatabaseInfo database_info(*self.databaseID, util::MakeStringView(_persistenceKey), + util::MakeStringView(_settings.host), _settings.sslEnabled); FSTDispatchQueue *userDispatchQueue = [FSTDispatchQueue queueWith:_settings.dispatchQueue]; - _client = [FSTFirestoreClient clientWithDatabaseInfo:databaseInfo + _client = [FSTFirestoreClient clientWithDatabaseInfo:database_info usePersistence:_settings.persistenceEnabled credentialsProvider:_credentialsProvider userDispatchQueue:userDispatchQueue @@ -312,6 +319,10 @@ extern "C" NSString *const FIRFirestoreErrorDomain = @"FIRFirestoreErrorDomain"; [self.client disableNetworkWithCompletion:completion]; } +- (const DatabaseId *)databaseID { + return &_databaseID; +} + @end NS_ASSUME_NONNULL_END |