@@ -158,31 +158,36 @@ public LocalStore(
158
158
hardAssert (
159
159
persistence .isStarted (), "LocalStore was passed an unstarted persistence implementation" );
160
160
this .persistence = persistence ;
161
+ this .queryEngine = queryEngine ;
162
+ this .indexBackfiller = indexBackfiller ;
163
+
161
164
targetCache = persistence .getTargetCache ();
162
165
bundleCache = persistence .getBundleCache ();
163
166
targetIdGenerator = TargetIdGenerator .forTargetCache (targetCache .getHighestTargetId ());
164
- indexManager = persistence .getIndexManager (initialUser );
165
- mutationQueue = persistence .getMutationQueue (initialUser , indexManager );
166
- documentOverlayCache = persistence .getDocumentOverlay (initialUser );
167
167
remoteDocuments = persistence .getRemoteDocumentCache ();
168
- localDocuments =
169
- new LocalDocumentsView (remoteDocuments , mutationQueue , documentOverlayCache , indexManager );
170
- this .queryEngine = queryEngine ;
171
- queryEngine .initialize (localDocuments , indexManager );
172
-
173
168
localViewReferences = new ReferenceSet ();
169
+ queryDataByTarget = new SparseArray <>();
170
+ targetIdByTarget = new HashMap <>();
171
+
174
172
persistence .getReferenceDelegate ().setInMemoryPins (localViewReferences );
175
173
176
- remoteDocuments .setIndexManager (indexManager );
174
+ initializeUserComponents (initialUser );
175
+ }
177
176
178
- this .indexBackfiller = indexBackfiller ;
177
+ private void initializeUserComponents (User user ) {
178
+ // TODO(indexing): Add spec tests that test these components change after a user change
179
+ indexManager = persistence .getIndexManager (user );
180
+ mutationQueue = persistence .getMutationQueue (user , indexManager );
181
+ documentOverlayCache = persistence .getDocumentOverlay (user );
182
+ localDocuments =
183
+ new LocalDocumentsView (remoteDocuments , mutationQueue , documentOverlayCache , indexManager );
184
+
185
+ remoteDocuments .setIndexManager (indexManager );
186
+ queryEngine .initialize (localDocuments , indexManager );
179
187
if (indexBackfiller != null ) {
180
188
indexBackfiller .setIndexManager (indexManager );
181
189
indexBackfiller .setLocalDocumentsView (localDocuments );
182
190
}
183
-
184
- queryDataByTarget = new SparseArray <>();
185
- targetIdByTarget = new HashMap <>();
186
191
}
187
192
188
193
public void start () {
@@ -205,27 +210,12 @@ public ImmutableSortedMap<DocumentKey, Document> handleUserChange(User user) {
205
210
// Swap out the mutation queue, grabbing the pending mutation batches before and after.
206
211
List <MutationBatch > oldBatches = mutationQueue .getAllMutationBatches ();
207
212
208
- indexManager = persistence .getIndexManager (user );
209
- mutationQueue = persistence .getMutationQueue (user , indexManager );
210
- documentOverlayCache = persistence .getDocumentOverlay (user );
211
-
213
+ initializeUserComponents (user );
212
214
startIndexManager ();
213
215
startMutationQueue ();
214
216
215
217
List <MutationBatch > newBatches = mutationQueue .getAllMutationBatches ();
216
218
217
- // Recreate our LocalDocumentsView using the new MutationQueue.
218
- localDocuments =
219
- new LocalDocumentsView (remoteDocuments , mutationQueue , documentOverlayCache , indexManager );
220
- queryEngine .initialize (localDocuments , indexManager );
221
-
222
- // TODO(indexing): Add spec tests that test these components change after a user change
223
- remoteDocuments .setIndexManager (indexManager );
224
- if (indexBackfiller != null ) {
225
- indexBackfiller .setIndexManager (indexManager );
226
- indexBackfiller .setLocalDocumentsView (localDocuments );
227
- }
228
-
229
219
// Union the old/new changed keys.
230
220
ImmutableSortedSet <DocumentKey > changedKeys = DocumentKey .emptyKeySet ();
231
221
for (List <MutationBatch > batches : asList (oldBatches , newBatches )) {
0 commit comments