Skip to content

Commit 7f24fca

Browse files
Simplify
1 parent 5b53cb0 commit 7f24fca

File tree

6 files changed

+20
-34
lines changed

6 files changed

+20
-34
lines changed

packages/firestore/src/core/component_provider.ts

+15-14
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,10 @@ import { Code, FirestoreError } from '../util/error';
4848
import { OnlineStateSource } from './types';
4949
import { LruParams, LruScheduler } from '../local/lru_garbage_collector';
5050
import { IndexFreeQueryEngine } from '../local/index_free_query_engine';
51-
import { MemorySharedClientStateSyncer } from '../local/shared_client_state_syncer';
5251
import {
53-
indexedDbStoragePrefix,
52+
indexedDbClearPersistence,
5453
IndexedDbPersistence,
55-
indexedDbClearPersistence
54+
indexedDbStoragePrefix
5655
} from '../local/indexeddb_persistence';
5756
import {
5857
MemoryEagerDelegate,
@@ -63,6 +62,7 @@ import { newSerializer } from '../platform/serializer';
6362
import { getDocument, getWindow } from '../platform/dom';
6463
import { CredentialsProvider } from '../api/credentials';
6564
import { Connection } from '../remote/connection';
65+
6666
const MEMORY_ONLY_PERSISTENCE_ERROR_MESSAGE =
6767
'You are using the memory-only build of Firestore. Persistence support is ' +
6868
'only available via the @firebase/firestore bundle or the ' +
@@ -198,7 +198,7 @@ export class MemoryComponentProvider implements ComponentProvider {
198198
}
199199

200200
createSyncEngine(cfg: ComponentConfiguration): SyncEngine {
201-
const syncEngine = newSyncEngine(
201+
return newSyncEngine(
202202
this.localStore,
203203
this.remoteStore,
204204
this.datastore,
@@ -207,10 +207,6 @@ export class MemoryComponentProvider implements ComponentProvider {
207207
cfg.maxConcurrentLimboResolutions,
208208
/* isPrimary= */ true
209209
);
210-
this.sharedClientState.syncEngine = new MemorySharedClientStateSyncer([
211-
cfg.clientId
212-
]);
213-
return syncEngine;
214210
}
215211

216212
clearPersistence(
@@ -330,12 +326,17 @@ export class MultiTabIndexedDbComponentProvider extends IndexedDbComponentProvid
330326
cfg.maxConcurrentLimboResolutions,
331327
startsAsPrimary
332328
);
333-
this.sharedClientState.syncEngine = {
334-
applyBatchState: applyBatchState.bind(null, syncEngine),
335-
applyTargetState: applyTargetState.bind(null, syncEngine),
336-
applyActiveTargetsChange: applyActiveTargetsChange.bind(null, syncEngine),
337-
getActiveClients: getActiveClients.bind(null, syncEngine)
338-
};
329+
if (this.sharedClientState instanceof WebStorageSharedClientState) {
330+
this.sharedClientState.syncEngine = {
331+
applyBatchState: applyBatchState.bind(null, syncEngine),
332+
applyTargetState: applyTargetState.bind(null, syncEngine),
333+
applyActiveTargetsChange: applyActiveTargetsChange.bind(
334+
null,
335+
syncEngine
336+
),
337+
getActiveClients: getActiveClients.bind(null, syncEngine)
338+
};
339+
}
339340
return syncEngine;
340341
}
341342

packages/firestore/src/core/sync_engine.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
getCachedTarget,
2222
ignoreIfPrimaryLeaseLoss,
2323
LocalStore,
24-
getCurrentlyActiveClients,
24+
getActiveClientsFromPersistence,
2525
lookupMutationDocuments,
2626
removeCachedMutationBatchMetadata
2727
} from '../local/local_store';
@@ -1234,7 +1234,7 @@ function synthesizeTargetToQuery(target: Target): Query {
12341234
// PORTING NOTE: Multi-Tab only.
12351235
export function getActiveClients(syncEngine: SyncEngine): Promise<ClientId[]> {
12361236
const syncEngineImpl = debugCast(syncEngine, SyncEngineImpl);
1237-
return getCurrentlyActiveClients(syncEngineImpl.localStore);
1237+
return getActiveClientsFromPersistence(syncEngineImpl.localStore);
12381238
}
12391239

12401240
/** Applies a query target change from a different tab. */

packages/firestore/src/local/local_store.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1090,7 +1090,7 @@ export function removeCachedMutationBatchMetadata(
10901090
}
10911091

10921092
// PORTING NOTE: Multi-Tab only.
1093-
export function getCurrentlyActiveClients(
1093+
export function getActiveClientsFromPersistence(
10941094
localStore: LocalStore
10951095
): Promise<ClientId[]> {
10961096
const persistenceImpl = debugCast(

packages/firestore/src/local/shared_client_state.ts

-3
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ export type ClientId = string;
7575
* assigned before calling `start()`.
7676
*/
7777
export interface SharedClientState {
78-
syncEngine: SharedClientStateSyncer | null;
7978
onlineStateHandler: ((onlineState: OnlineState) => void) | null;
8079
sequenceNumberHandler:
8180
| ((sequenceNumber: ListenSequenceNumber) => void)
@@ -1059,8 +1058,6 @@ function fromWebStorageSequenceNumber(
10591058
export class MemorySharedClientState implements SharedClientState {
10601059
private localState = new LocalClientState();
10611060
private queryState: { [targetId: number]: QueryTargetState } = {};
1062-
1063-
syncEngine: SharedClientStateSyncer | null = null;
10641061
onlineStateHandler: ((onlineState: OnlineState) => void) | null = null;
10651062
sequenceNumberHandler:
10661063
| ((sequenceNumber: ListenSequenceNumber) => void)

packages/firestore/test/unit/local/persistence_test_helpers.ts

-8
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ import {
4141
ClientId,
4242
WebStorageSharedClientState
4343
} from '../../../src/local/shared_client_state';
44-
import { MemorySharedClientStateSyncer } from '../../../src/local/shared_client_state_syncer';
4544
import { SimpleDb } from '../../../src/local/simple_db';
4645
import { JsonProtoSerializer } from '../../../src/remote/serializer';
4746
import { AsyncQueue } from '../../../src/util/async_queue';
@@ -156,13 +155,6 @@ export async function populateWebStorage(
156155
existingClientId,
157156
user
158157
);
159-
160-
secondaryClientState.syncEngine = new MemorySharedClientStateSyncer([
161-
existingClientId
162-
]);
163-
secondaryClientState.onlineStateHandler = () => {};
164-
await secondaryClientState.start();
165-
166158
for (const batchId of existingMutationBatchIds) {
167159
secondaryClientState.addPendingMutation(batchId);
168160
}

packages/firestore/test/unit/local/web_storage_shared_client_state.test.ts

+2-6
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ import {
3232
SharedClientState,
3333
WebStorageSharedClientState
3434
} from '../../../src/local/shared_client_state';
35-
import {
36-
QueryTargetState,
37-
SharedClientStateSyncer
38-
} from '../../../src/local/shared_client_state_syncer';
3935
import { targetIdSet } from '../../../src/model/collections';
4036
import { AsyncQueue } from '../../../src/util/async_queue';
4137
import { FirestoreError } from '../../../src/util/error';
@@ -48,6 +44,7 @@ import {
4844
} from './persistence_test_helpers';
4945
import { testWindow } from '../../util/test_platform';
5046
import { WindowLike } from '../../../src/util/types';
47+
import { QueryTargetState } from '../../../src/local/shared_client_state_syncer';
5148

5249
/* eslint-disable no-restricted-globals */
5350

@@ -91,7 +88,7 @@ interface TestSharedClientState {
9188
* Implementation of `SharedClientStateSyncer` that aggregates its callback
9289
* data and exposes it via `.sharedClientState`.
9390
*/
94-
class TestSharedClientSyncer implements SharedClientStateSyncer {
91+
class TestSharedClientSyncer {
9592
private mutationState: {
9693
[batchId: number]: { state: MutationBatchState; error?: FirestoreError };
9794
} = {};
@@ -215,7 +212,6 @@ describe('WebStorageSharedClientState', () => {
215212
AUTHENTICATED_USER
216213
);
217214
clientSyncer = new TestSharedClientSyncer([primaryClientId]);
218-
sharedClientState.syncEngine = clientSyncer;
219215
sharedClientState.onlineStateHandler = clientSyncer.applyOnlineStateChange.bind(
220216
clientSyncer
221217
);

0 commit comments

Comments
 (0)