Skip to content

Commit 2bac522

Browse files
Use generic removeComponents
1 parent 8d57993 commit 2bac522

File tree

5 files changed

+28
-20
lines changed

5 files changed

+28
-20
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,3 +124,15 @@ export async function removeFirestoreClient(
124124
);
125125
}
126126
}
127+
128+
/**
129+
* Removes all components associated with the provided instance. Must be called
130+
* when the Firestore instance is terminated.
131+
*/
132+
export async function removeComponents(firestore: Firestore): Promise<void> {
133+
const firestoreClientPromise = firestoreClientInstances.get(firestore);
134+
if (firestoreClientPromise) {
135+
firestoreClientInstances.delete(firestore);
136+
return (await firestoreClientPromise).terminate();
137+
}
138+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import {
4141
import {
4242
getFirestoreClient,
4343
initializeFirestoreClient,
44-
removeFirestoreClient
44+
removeComponents
4545
} from './components';
4646

4747
/**
@@ -71,7 +71,7 @@ export class Firestore extends LiteFirestore
7171

7272
async _terminate(): Promise<void> {
7373
await super._terminate();
74-
await removeFirestoreClient(this);
74+
await removeComponents(this);
7575
}
7676
}
7777

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

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import {
19-
Datastore,
20-
newDatastore,
21-
terminateDatastore
22-
} from '../../../src/remote/datastore';
18+
import { Datastore, newDatastore } from '../../../src/remote/datastore';
2319
import { newConnection } from '../../../src/platform/connection';
2420
import { newSerializer } from '../../../src/platform/serializer';
2521
import { Firestore } from './database';
@@ -66,13 +62,13 @@ export function getDatastore(firestore: Firestore): Promise<Datastore> {
6662
}
6763

6864
/**
69-
* Removes and terminates the Datastore for the given instance if it has
70-
* been started.
65+
* Removes all components associated with the provided instance. Must be called
66+
* when the Firestore instance is terminated.
7167
*/
72-
export async function removeDatastore(firestore: Firestore): Promise<void> {
73-
const datastore = await datastoreInstances.get(firestore);
74-
if (datastore) {
68+
export async function removeComponents(firestore: Firestore): Promise<void> {
69+
const datastorePromise = await datastoreInstances.get(firestore);
70+
if (datastorePromise) {
7571
datastoreInstances.delete(firestore);
76-
return terminateDatastore(datastore);
72+
return (await datastorePromise).termiate();
7773
}
7874
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import {
2929
FirebaseCredentialsProvider
3030
} from '../../../src/api/credentials';
3131
import { cast } from './util';
32-
import { removeDatastore } from './components';
32+
import { removeComponents } from './components';
3333
import { debugAssert } from '../../../src/util/assert';
3434

3535
/**
@@ -112,7 +112,7 @@ export class Firestore
112112
*/
113113
protected _terminate(): Promise<void> {
114114
debugAssert(!this._terminated, 'Cannot invoke _terminate() more than once');
115-
return removeDatastore(this);
115+
return removeComponents(this);
116116
}
117117

118118
// TODO(firestoreexp): `deleteApp()` should call the delete method above,

packages/firestore/src/remote/datastore.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import { Query } from '../core/query';
4848
*/
4949
export abstract class Datastore {
5050
abstract start(connection: Connection): void;
51+
abstract termiate(): Promise<void>;
5152
}
5253

5354
/**
@@ -118,6 +119,10 @@ class DatastoreImpl extends Datastore {
118119
throw error;
119120
});
120121
}
122+
123+
async termiate(): Promise<void> {
124+
this.terminated = false;
125+
}
121126
}
122127

123128
// TODO(firestorexp): Make sure there is only one Datastore instance per
@@ -230,8 +235,3 @@ export function newPersistentWatchStream(
230235
listener
231236
);
232237
}
233-
234-
export function terminateDatastore(datastore: Datastore): void {
235-
const datastoreImpl = debugCast(datastore, DatastoreImpl);
236-
datastoreImpl.terminated = true;
237-
}

0 commit comments

Comments
 (0)