66import { Delayer , disposableTimeout } from 'vs/base/common/async' ;
77import { Event , Emitter } from 'vs/base/common/event' ;
88import { Disposable , toDisposable , MutableDisposable , IDisposable } from 'vs/base/common/lifecycle' ;
9- import { IUserDataSyncLogService , IUserDataSyncService , SyncStatus , IUserDataAutoSyncService , UserDataSyncError , UserDataSyncErrorCode , IUserDataSyncEnablementService , ALL_SYNC_RESOURCES } from 'vs/platform/userDataSync/common/userDataSync' ;
9+ import { IUserDataSyncLogService , IUserDataSyncService , IUserDataAutoSyncService , UserDataSyncError , UserDataSyncErrorCode , IUserDataSyncEnablementService , ALL_SYNC_RESOURCES , getUserDataSyncStore } from 'vs/platform/userDataSync/common/userDataSync' ;
1010import { IAuthenticationTokenService } from 'vs/platform/authentication/common/authentication' ;
1111import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' ;
12+ import { IProductService } from 'vs/platform/product/common/productService' ;
13+ import { IConfigurationService } from 'vs/platform/configuration/common/configuration' ;
1214
1315type AutoSyncClassification = {
1416 sources : { classification : 'SystemMetaData' , purpose : 'FeatureInsight' , isMeasurement : true } ;
@@ -34,22 +36,29 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto
3436 @IUserDataSyncLogService private readonly logService : IUserDataSyncLogService ,
3537 @IAuthenticationTokenService private readonly authTokenService : IAuthenticationTokenService ,
3638 @ITelemetryService private readonly telemetryService : ITelemetryService ,
39+ @IProductService private readonly productService : IProductService ,
40+ @IConfigurationService private readonly configurationService : IConfigurationService ,
3741 ) {
3842 super ( ) ;
39- this . updateEnablement ( ) ;
4043 this . syncTriggerDelayer = this . _register ( new Delayer < void > ( 0 ) ) ;
41- this . _register ( Event . any ( authTokenService . onDidChangeToken , userDataSyncService . onDidChangeStatus , this . userDataSyncEnablementService . onDidChangeEnablement ) ( ( ) => this . updateEnablement ( ) ) ) ;
42- this . _register ( Event . filter ( this . userDataSyncEnablementService . onDidChangeResourceEnablement , ( [ , enabled ] ) => enabled ) ( ( ) => this . triggerAutoSync ( [ RESOURCE_ENABLEMENT_SOURCE ] ) ) ) ;
44+
45+ if ( getUserDataSyncStore ( this . productService , this . configurationService ) ) {
46+ this . updateAutoSync ( ) ;
47+ this . _register ( Event . any ( authTokenService . onDidChangeToken , this . userDataSyncEnablementService . onDidChangeEnablement ) ( ( ) => this . updateAutoSync ( ) ) ) ;
48+ this . _register ( Event . filter ( this . userDataSyncEnablementService . onDidChangeResourceEnablement , ( [ , enabled ] ) => enabled ) ( ( ) => this . triggerAutoSync ( [ RESOURCE_ENABLEMENT_SOURCE ] ) ) ) ;
49+ }
4350 }
4451
45- private updateEnablement ( ) : void {
52+ private updateAutoSync ( ) : void {
4653 const { enabled, reason } = this . isAutoSyncEnabled ( ) ;
4754 if ( enabled ) {
4855 if ( this . autoSync . value === undefined ) {
49- const autoSync = new AutoSync ( this . startAutoSync ( ) , 1000 * 60 * 5 /* 5 miutes */ , this . userDataSyncService , this . logService ) ;
50- autoSync . register ( autoSync . onDidStartSync ( ( ) => this . lastSyncTriggerTime = new Date ( ) . getTime ( ) ) ) ;
51- autoSync . register ( autoSync . onDidFinishSync ( e => this . onDidFinishSync ( e ) ) ) ;
52- this . autoSync . value = autoSync ;
56+ this . autoSync . value = new AutoSync ( 1000 * 60 * 5 /* 5 miutes */ , this . userDataSyncService , this . logService ) ;
57+ this . autoSync . value . register ( this . autoSync . value . onDidStartSync ( ( ) => this . lastSyncTriggerTime = new Date ( ) . getTime ( ) ) ) ;
58+ this . autoSync . value . register ( this . autoSync . value . onDidFinishSync ( e => this . onDidFinishSync ( e ) ) ) ;
59+ if ( this . startAutoSync ( ) ) {
60+ this . autoSync . value . start ( ) ;
61+ }
5362 }
5463 } else {
5564 if ( this . autoSync . value !== undefined ) {
@@ -66,9 +75,6 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto
6675 if ( ! this . userDataSyncEnablementService . isEnabled ( ) ) {
6776 return { enabled : false , reason : 'sync is disabled' } ;
6877 }
69- if ( this . userDataSyncService . status === SyncStatus . Uninitialized ) {
70- return { enabled : false , reason : 'sync is not initialized' } ;
71- }
7278 if ( ! this . authTokenService . token ) {
7379 return { enabled : false , reason : 'token is not avaialable' } ;
7480 }
@@ -145,21 +151,21 @@ class AutoSync extends Disposable {
145151 readonly onDidFinishSync = this . _onDidFinishSync . event ;
146152
147153 constructor (
148- start : boolean ,
149154 private readonly interval : number /* in milliseconds */ ,
150155 private readonly userDataSyncService : IUserDataSyncService ,
151156 private readonly logService : IUserDataSyncLogService ,
152157 ) {
153158 super ( ) ;
154- if ( start ) {
155- this . _register ( this . onDidFinishSync ( ( ) => this . waitUntilNextIntervalAndSync ( ) ) ) ;
156- this . _register ( toDisposable ( ( ) => {
157- this . logService . info ( 'Auto Sync: Stopped' ) ;
158- this . userDataSyncService . stop ( ) ;
159- } ) ) ;
160- this . logService . info ( 'Auto Sync: Started' ) ;
161- this . sync ( AutoSync . INTERVAL_SYNCING ) ;
162- }
159+ }
160+
161+ start ( ) : void {
162+ this . _register ( this . onDidFinishSync ( ( ) => this . waitUntilNextIntervalAndSync ( ) ) ) ;
163+ this . _register ( toDisposable ( ( ) => {
164+ this . userDataSyncService . stop ( ) ;
165+ this . logService . info ( 'Auto Sync: Stopped' ) ;
166+ } ) ) ;
167+ this . logService . info ( 'Auto Sync: Started' ) ;
168+ this . sync ( AutoSync . INTERVAL_SYNCING ) ;
163169 }
164170
165171 private waitUntilNextIntervalAndSync ( ) : void {
0 commit comments