@@ -33,23 +33,19 @@ import {
33
33
applyPrimaryState ,
34
34
applyTargetState ,
35
35
getActiveClients ,
36
- handleCredentialChange ,
36
+ syncEngineHandleCredentialChange ,
37
37
newSyncEngine ,
38
- SyncEngine
38
+ SyncEngine ,
39
+ ensureWriteCallbacks
39
40
} from './sync_engine' ;
40
41
import {
42
+ fillWritePipeline ,
41
43
newRemoteStore ,
42
44
RemoteStore ,
43
45
remoteStoreApplyPrimaryState ,
44
46
remoteStoreShutdown
45
47
} from '../remote/remote_store' ;
46
- import {
47
- EventManager ,
48
- newEventManager ,
49
- eventManagerOnOnlineStateChange ,
50
- eventManagerOnWatchChange ,
51
- eventManagerOnWatchError
52
- } from './event_manager' ;
48
+ import { EventManager , newEventManager } from './event_manager' ;
53
49
import { AsyncQueue } from '../util/async_queue' ;
54
50
import { DatabaseId , DatabaseInfo } from './database_info' ;
55
51
import { Datastore , newDatastore } from '../remote/datastore' ;
@@ -185,9 +181,21 @@ export class IndexedDbOfflineComponentProvider extends MemoryOfflineComponentPro
185
181
localStore ! : LocalStore ;
186
182
gcScheduler ! : GarbageCollectionScheduler | null ;
187
183
184
+ constructor (
185
+ protected readonly onlineComponentProvider : OnlineComponentProvider
186
+ ) {
187
+ super ( ) ;
188
+ }
189
+
188
190
async initialize ( cfg : ComponentConfiguration ) : Promise < void > {
189
191
await super . initialize ( cfg ) ;
190
192
await synchronizeLastDocumentChangeReadTime ( this . localStore ) ;
193
+
194
+ await this . onlineComponentProvider . initialize ( this , cfg ) ;
195
+
196
+ // Enqueue writes from a previous session
197
+ await ensureWriteCallbacks ( this . onlineComponentProvider . syncEngine ) ;
198
+ await fillWritePipeline ( this . onlineComponentProvider . remoteStore ) ;
191
199
}
192
200
193
201
createGarbageCollectionScheduler (
@@ -246,16 +254,9 @@ export class IndexedDbOfflineComponentProvider extends MemoryOfflineComponentPro
246
254
* `synchronizeTabs` will be enabled.
247
255
*/
248
256
export class MultiTabOfflineComponentProvider extends IndexedDbOfflineComponentProvider {
249
- constructor (
250
- private readonly onlineComponentProvider : OnlineComponentProvider
251
- ) {
252
- super ( ) ;
253
- }
254
-
255
257
async initialize ( cfg : ComponentConfiguration ) : Promise < void > {
256
258
await super . initialize ( cfg ) ;
257
259
258
- await this . onlineComponentProvider . initialize ( this , cfg ) ;
259
260
const syncEngine = this . onlineComponentProvider . syncEngine ;
260
261
261
262
if ( this . sharedClientState instanceof WebStorageSharedClientState ) {
@@ -342,17 +343,8 @@ export class OnlineComponentProvider {
342
343
this . sharedClientState = offlineComponentProvider . sharedClientState ;
343
344
this . datastore = this . createDatastore ( cfg ) ;
344
345
this . remoteStore = this . createRemoteStore ( cfg ) ;
345
- this . syncEngine = this . createSyncEngine ( cfg ) ;
346
346
this . eventManager = this . createEventManager ( cfg ) ;
347
-
348
- this . syncEngine . subscribe ( {
349
- onWatchChange : eventManagerOnWatchChange . bind ( null , this . eventManager ) ,
350
- onWatchError : eventManagerOnWatchError . bind ( null , this . eventManager ) ,
351
- onOnlineStateChange : eventManagerOnOnlineStateChange . bind (
352
- null ,
353
- this . eventManager
354
- )
355
- } ) ;
347
+ this . syncEngine = this . createSyncEngine ( cfg ) ;
356
348
357
349
this . sharedClientState . onlineStateHandler = onlineState =>
358
350
applyOnlineStateChange (
@@ -361,7 +353,7 @@ export class OnlineComponentProvider {
361
353
OnlineStateSource . SharedClientState
362
354
) ;
363
355
364
- this . remoteStore . remoteSyncer . handleCredentialChange = handleCredentialChange . bind (
356
+ this . remoteStore . remoteSyncer . handleCredentialChange = syncEngineHandleCredentialChange . bind (
365
357
null ,
366
358
this . syncEngine
367
359
) ;
@@ -401,6 +393,7 @@ export class OnlineComponentProvider {
401
393
return newSyncEngine (
402
394
this . localStore ,
403
395
this . remoteStore ,
396
+ this . eventManager ,
404
397
this . sharedClientState ,
405
398
cfg . initialUser ,
406
399
cfg . maxConcurrentLimboResolutions ,
0 commit comments