diff --git a/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts b/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts index 4d60c3b4305fdd..8fb9b2e40f48c0 100644 --- a/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts +++ b/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts @@ -105,7 +105,11 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto } else { this.logService.info('[AutoSync] Disabled.'); } - this.updateAutoSync(); + if (this.meteredConnectionService.isConnectionMetered) { + void this.initializeAutoSync(); + } else { + this.updateAutoSync(); + } if (this.hasToDisableMachineEventually()) { this.disableMachineEventually(); @@ -120,6 +124,13 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto } } + private async initializeAutoSync(): Promise { + await this.meteredConnectionService.whenInitialized; + if (!this._store.isDisposed) { + this.updateAutoSync(); + } + } + private updateAutoSync(): void { const { enabled, message } = this.isAutoSyncEnabled(); if (enabled) { diff --git a/src/vs/platform/userDataSync/test/common/userDataSyncClient.ts b/src/vs/platform/userDataSync/test/common/userDataSyncClient.ts index 058eab04cfb526..ba543566b148bd 100644 --- a/src/vs/platform/userDataSync/test/common/userDataSyncClient.ts +++ b/src/vs/platform/userDataSync/test/common/userDataSyncClient.ts @@ -102,7 +102,7 @@ export class UserDataSyncClient extends Disposable { await configurationService.initialize(); this.instantiationService.stub(IConfigurationService, configurationService); - this.instantiationService.stub(IMeteredConnectionService, { isConnectionMetered: false, onDidChangeIsConnectionMetered: new Emitter().event }); + this.instantiationService.stub(IMeteredConnectionService, { isConnectionMetered: false, whenInitialized: Promise.resolve(), onDidChangeIsConnectionMetered: new Emitter().event }); this.instantiationService.stub(IRequestService, this.testServer);