aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/API/FIRFirestore.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Source/API/FIRFirestore.mm')
-rw-r--r--Firestore/Source/API/FIRFirestore.mm41
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