Skip to content

Commit a91f02d

Browse files
Address some of the feedback
1 parent 8305a4f commit a91f02d

File tree

5 files changed

+50
-56
lines changed

5 files changed

+50
-56
lines changed

packages/firestore/exp/src/api/database.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ import {
3737
} from '../../../src/core/component_provider';
3838
import {
3939
FirebaseFirestore as LiteFirestore,
40-
FirestoreDatabase,
4140
Settings as LiteSettings
4241
} from '../../../lite/src/api/database';
42+
import { DatabaseId } from '../../../src/core/database_info';
4343
import { Code, FirestoreError } from '../../../src/util/error';
4444
import { Deferred } from '../../../src/util/promise';
4545
import { LRU_MINIMUM_CACHE_SIZE_BYTES } from '../../../src/local/lru_garbage_collector';
@@ -77,11 +77,12 @@ export class FirebaseFirestore
7777
_firestoreClient: FirestoreClient | undefined;
7878

7979
constructor(
80-
app: FirestoreDatabase | FirebaseApp,
80+
databaseIdOrApp: DatabaseId | FirebaseApp,
8181
authProvider: Provider<FirebaseAuthInternalName>
8282
) {
83-
super(app, authProvider);
84-
this._persistenceKey = 'name' in app ? app.name : '[DEFAULT]';
83+
super(databaseIdOrApp, authProvider);
84+
this._persistenceKey =
85+
'name' in databaseIdOrApp ? databaseIdOrApp.name : '[DEFAULT]';
8586
}
8687

8788
_terminate(): Promise<void> {

packages/firestore/index.console.ts

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ import {
2020
Firestore as FirestoreCompat,
2121
MemoryPersistenceProvider
2222
} from './src/api/database';
23-
import { FirestoreDatabase } from './lite/src/api/database';
2423
import { Provider } from '@firebase/component';
2524
import { FirebaseAuthInternalName } from '@firebase/auth-interop-types';
25+
import { DatabaseId } from './src/core/database_info';
26+
import { Code, FirestoreError } from './src/util/error';
2627
export {
2728
CollectionReference,
2829
DocumentReference,
@@ -35,16 +36,36 @@ export { FieldPath } from './src/api/field_path';
3536
export { FieldValue } from './src/compat/field_value';
3637
export { Timestamp } from './src/api/timestamp';
3738

39+
export interface FirestoreDatabase {
40+
projectId: string;
41+
database?: string;
42+
}
43+
3844
/** Firestore class that exposes the constructor expected by the Console. */
3945
export class Firestore extends FirestoreCompat {
4046
constructor(
41-
databaseId: FirestoreDatabase,
47+
firestoreDatabase: FirestoreDatabase,
4248
authProvider: Provider<FirebaseAuthInternalName>
4349
) {
4450
super(
45-
databaseId,
46-
new FirestoreExp(databaseId, authProvider),
51+
databaseIdFromFirestoreDatabase(firestoreDatabase),
52+
new FirestoreExp(
53+
databaseIdFromFirestoreDatabase(firestoreDatabase),
54+
authProvider
55+
),
4756
new MemoryPersistenceProvider()
4857
);
4958
}
5059
}
60+
61+
function databaseIdFromFirestoreDatabase(
62+
firestoreDatabase: FirestoreDatabase
63+
): DatabaseId {
64+
if (!firestoreDatabase.projectId) {
65+
throw new FirestoreError(Code.INVALID_ARGUMENT, 'Must provide projectId');
66+
}
67+
return new DatabaseId(
68+
firestoreDatabase.projectId,
69+
firestoreDatabase.database
70+
);
71+
}

packages/firestore/lite/src/api/database.ts

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,6 @@ declare module '@firebase/component' {
4747
const DEFAULT_HOST = 'firestore.googleapis.com';
4848
const DEFAULT_SSL = true;
4949

50-
/**
51-
* Options that can be provided in the Firestore constructor when not using
52-
* Firebase (aka standalone mode).
53-
*/
54-
export interface FirestoreDatabase {
55-
projectId: string;
56-
database?: string;
57-
}
58-
5950
export interface Settings {
6051
host?: string;
6152
ssl?: boolean;
@@ -175,25 +166,16 @@ export class FirebaseFirestore implements _FirebaseService {
175166
private _app?: FirebaseApp;
176167

177168
constructor(
178-
databaseIdOrApp: FirebaseApp | FirestoreDatabase,
169+
databaseIdOrApp: DatabaseId | FirebaseApp,
179170
authProvider: Provider<FirebaseAuthInternalName>
180171
) {
181-
if (typeof (databaseIdOrApp as FirebaseApp).options === 'object') {
172+
if (databaseIdOrApp instanceof DatabaseId) {
173+
this._databaseId = databaseIdOrApp;
174+
this._credentials = new EmptyCredentialsProvider();
175+
} else {
182176
this._app = databaseIdOrApp as FirebaseApp;
183-
this._databaseId = FirebaseFirestore._databaseIdFromApp(
184-
databaseIdOrApp as FirebaseApp
185-
);
177+
this._databaseId = databaseIdFromApp(databaseIdOrApp as FirebaseApp);
186178
this._credentials = new FirebaseCredentialsProvider(authProvider);
187-
} else {
188-
const external = databaseIdOrApp as FirestoreDatabase;
189-
if (!external.projectId) {
190-
throw new FirestoreError(
191-
Code.INVALID_ARGUMENT,
192-
'Must provide projectId'
193-
);
194-
}
195-
this._databaseId = new DatabaseId(external.projectId, external.database);
196-
this._credentials = new EmptyCredentialsProvider();
197179
}
198180
}
199181

@@ -244,17 +226,6 @@ export class FirebaseFirestore implements _FirebaseService {
244226
return this._settings;
245227
}
246228

247-
private static _databaseIdFromApp(app: FirebaseApp): DatabaseId {
248-
if (!Object.prototype.hasOwnProperty.apply(app.options, ['projectId'])) {
249-
throw new FirestoreError(
250-
Code.INVALID_ARGUMENT,
251-
'"projectId" not provided in firebase.initializeApp.'
252-
);
253-
}
254-
255-
return new DatabaseId(app.options.projectId!);
256-
}
257-
258229
_delete(): Promise<void> {
259230
if (!this._terminateTask) {
260231
this._terminateTask = this._terminate();
@@ -275,6 +246,17 @@ export class FirebaseFirestore implements _FirebaseService {
275246
}
276247
}
277248

249+
function databaseIdFromApp(app: FirebaseApp): DatabaseId {
250+
if (!Object.prototype.hasOwnProperty.apply(app.options, ['projectId'])) {
251+
throw new FirestoreError(
252+
Code.INVALID_ARGUMENT,
253+
'"projectId" not provided in firebase.initializeApp.'
254+
);
255+
}
256+
257+
return new DatabaseId(app.options.projectId!);
258+
}
259+
278260
/**
279261
* Initializes a new instance of Cloud Firestore with the provided settings.
280262
* Can only be called before any other functions, including

packages/firestore/src/api/database.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,7 @@ import {
139139
WriteBatch as PublicWriteBatch
140140
} from '@firebase/firestore-types';
141141
import { newUserDataReader } from '../../lite/src/api/reference';
142-
import {
143-
FirestoreDatabase,
144-
makeDatabaseInfo
145-
} from '../../lite/src/api/database';
142+
import { makeDatabaseInfo } from '../../lite/src/api/database';
146143
import { DEFAULT_HOST } from '../../lite/src/api/components';
147144

148145
/**
@@ -227,13 +224,13 @@ export class Firestore
227224
implements PublicFirestore, FirebaseService {
228225
_appCompat?: FirebaseApp;
229226
constructor(
230-
databaseIdOrApp: FirestoreDatabase | FirebaseApp,
227+
databaseIdOrApp: DatabaseId | FirebaseApp,
231228
delegate: ExpFirebaseFirestore,
232229
private _persistenceProvider: PersistenceProvider
233230
) {
234231
super(delegate);
235232

236-
if (typeof (databaseIdOrApp as FirebaseApp).options === 'object') {
233+
if (!(databaseIdOrApp instanceof DatabaseId)) {
237234
this._appCompat = databaseIdOrApp as FirebaseApp;
238235
}
239236
}

packages/firestore/src/core/database_info.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,4 @@ export class DatabaseId {
6363
other.database === this.database
6464
);
6565
}
66-
67-
compareTo(other: DatabaseId): number {
68-
return (
69-
primitiveComparator(this.projectId, other.projectId) ||
70-
primitiveComparator(this.database, other.database)
71-
);
72-
}
7366
}

0 commit comments

Comments
 (0)