Skip to content

Commit 3b24b7a

Browse files
Use generic removeComponents
1 parent 8d57993 commit 3b24b7a

File tree

5 files changed

+25
-17
lines changed

5 files changed

+25
-17
lines changed

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

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

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ import {
4040
} from '../../../src/local/indexeddb_persistence';
4141
import {
4242
getFirestoreClient,
43-
initializeFirestoreClient,
44-
removeFirestoreClient
43+
initializeFirestoreClient, removeComponents
4544
} from './components';
4645

4746
/**
@@ -71,7 +70,7 @@ export class Firestore extends LiteFirestore
7170

7271
async _terminate(): Promise<void> {
7372
await super._terminate();
74-
await removeFirestoreClient(this);
73+
await removeComponents(this);
7574
}
7675
}
7776

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import {
1919
Datastore,
2020
newDatastore,
21-
terminateDatastore
2221
} from '../../../src/remote/datastore';
2322
import { newConnection } from '../../../src/platform/connection';
2423
import { newSerializer } from '../../../src/platform/serializer';
@@ -66,13 +65,12 @@ export function getDatastore(firestore: Firestore): Promise<Datastore> {
6665
}
6766

6867
/**
69-
* Removes and terminates the Datastore for the given instance if it has
70-
* been started.
68+
* Removes all components associated with the provided instance;
7169
*/
72-
export async function removeDatastore(firestore: Firestore): Promise<void> {
73-
const datastore = await datastoreInstances.get(firestore);
74-
if (datastore) {
70+
export async function removeComponents(firestore: Firestore): Promise<void> {
71+
const datastorePromise = await datastoreInstances.get(firestore);
72+
if (datastorePromise) {
7573
datastoreInstances.delete(firestore);
76-
return terminateDatastore(datastore);
74+
return (await datastorePromise).termiate();
7775
}
7876
}

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)