Merge from vscode c58aaab8a1cc22a7139b761166a0d4f37d41e998 (#7880)

* Merge from vscode c58aaab8a1cc22a7139b761166a0d4f37d41e998

* fix pipelines

* fix strict-null-checks

* add missing files
This commit is contained in:
Anthony Dresser
2019-10-21 22:12:22 -07:00
committed by GitHub
parent 7c9be74970
commit 1e22f47304
913 changed files with 18898 additions and 16536 deletions

View File

@@ -70,16 +70,16 @@ export class ExtensionsSynchroniser extends Disposable implements ISynchroniser
async sync(): Promise<boolean> {
if (!this.configurationService.getValue<boolean>('configurationSync.enableExtensions')) {
this.logService.trace('Extensions: Skipping synchronising extensions as it is disabled.');
this.logService.trace('Extensions: Skipping synchronizing extensions as it is disabled.');
return false;
}
if (this.status !== SyncStatus.Idle) {
this.logService.trace('Extensions: Skipping synchronising extensions as it is running already.');
this.logService.trace('Extensions: Skipping synchronizing extensions as it is running already.');
return false;
}
this.logService.trace('Extensions: Started synchronising extensions...');
this.logService.trace('Extensions: Started synchronizing extensions...');
this.setStatus(SyncStatus.Syncing);
try {
@@ -88,13 +88,13 @@ export class ExtensionsSynchroniser extends Disposable implements ISynchroniser
this.setStatus(SyncStatus.Idle);
if (e instanceof UserDataSyncStoreError && e.code === UserDataSyncStoreErrorCode.Rejected) {
// Rejected as there is a new remote version. Syncing again,
this.logService.info('Extensions: Failed to synchronise extensions as there is a new remote version available. Synchronising again...');
this.logService.info('Extensions: Failed to synchronise extensions as there is a new remote version available. Synchronizing again...');
return this.sync();
}
throw e;
}
this.logService.trace('Extensions: Finised synchronising extensions.');
this.logService.trace('Extensions: Finised synchronizing extensions.');
this.setStatus(SyncStatus.Idle);
return true;
}
@@ -129,7 +129,7 @@ export class ExtensionsSynchroniser extends Disposable implements ISynchroniser
const { added, removed, updated, remote } = this.merge(localExtensions, remoteExtensions, lastSyncExtensions);
if (!added.length && !removed.length && !updated.length && !remote) {
this.logService.trace('Extensions: No changes found during synchronising extensions.');
this.logService.trace('Extensions: No changes found during synchronizing extensions.');
}
if (added.length || removed.length || updated.length) {
@@ -162,7 +162,7 @@ export class ExtensionsSynchroniser extends Disposable implements ISynchroniser
const ignoredExtensions = this.configurationService.getValue<string[]>('configurationSync.extensionsToIgnore') || [];
// First time sync
if (!remoteExtensions) {
this.logService.info('Extensions: Remote extensions does not exist. Synchronising extensions for the first time.');
this.logService.info('Extensions: Remote extensions does not exist. Synchronizing extensions for the first time.');
return { added: [], removed: [], updated: [], remote: localExtensions.filter(({ identifier }) => ignoredExtensions.some(id => id.toLowerCase() === identifier.id.toLowerCase())) };
}

View File

@@ -81,27 +81,27 @@ export class SettingsSynchroniser extends Disposable implements ISynchroniser {
async sync(_continue?: boolean): Promise<boolean> {
if (!this.configurationService.getValue<boolean>('configurationSync.enableSettings')) {
this.logService.trace('Settings: Skipping synchronising settings as it is disabled.');
this.logService.trace('Settings: Skipping synchronizing settings as it is disabled.');
return false;
}
if (_continue) {
this.logService.info('Settings: Resumed synchronising settings');
this.logService.info('Settings: Resumed synchronizing settings');
return this.continueSync();
}
if (this.status !== SyncStatus.Idle) {
this.logService.trace('Settings: Skipping synchronising settings as it is running already.');
this.logService.trace('Settings: Skipping synchronizing settings as it is running already.');
return false;
}
this.logService.trace('Settings: Started synchronising settings...');
this.logService.trace('Settings: Started synchronizing settings...');
this.setStatus(SyncStatus.Syncing);
try {
const result = await this.getPreview();
if (result.hasConflicts) {
this.logService.info('Settings: Detected conflicts while synchronising settings.');
this.logService.info('Settings: Detected conflicts while synchronizing settings.');
this.setStatus(SyncStatus.HasConflicts);
return false;
}
@@ -112,12 +112,12 @@ export class SettingsSynchroniser extends Disposable implements ISynchroniser {
this.setStatus(SyncStatus.Idle);
if (e instanceof UserDataSyncStoreError && e.code === UserDataSyncStoreErrorCode.Rejected) {
// Rejected as there is a new remote version. Syncing again,
this.logService.info('Settings: Failed to synchronise settings as there is a new remote version available. Synchronising again...');
this.logService.info('Settings: Failed to synchronise settings as there is a new remote version available. Synchronizing again...');
return this.sync();
}
if (e instanceof FileSystemProviderError && e.code === FileSystemProviderErrorCode.FileExists) {
// Rejected as there is a new local version. Syncing again.
this.logService.info('Settings: Failed to synchronise settings as there is a new local version available. Synchronising again...');
this.logService.info('Settings: Failed to synchronise settings as there is a new local version available. Synchronizing again...');
return this.sync();
}
throw e;
@@ -128,7 +128,7 @@ export class SettingsSynchroniser extends Disposable implements ISynchroniser {
if (this.syncPreviewResultPromise) {
this.syncPreviewResultPromise.cancel();
this.syncPreviewResultPromise = null;
this.logService.info('Settings: Stopped synchronising settings.');
this.logService.info('Settings: Stopped synchronizing settings.');
}
this.fileService.del(this.environmentService.settingsSyncPreviewResource);
this.setStatus(SyncStatus.Idle);
@@ -158,7 +158,7 @@ export class SettingsSynchroniser extends Disposable implements ISynchroniser {
let { fileContent, remoteUserData, hasLocalChanged, hasRemoteChanged } = await this.syncPreviewResultPromise;
if (!hasLocalChanged && !hasRemoteChanged) {
this.logService.trace('Settings: No changes found during synchronising settings.');
this.logService.trace('Settings: No changes found during synchronizing settings.');
}
if (hasLocalChanged) {
this.logService.info('Settings: Updating local settings');
@@ -178,10 +178,10 @@ export class SettingsSynchroniser extends Disposable implements ISynchroniser {
// Delete the preview
await this.fileService.del(this.environmentService.settingsSyncPreviewResource);
} else {
this.logService.trace('Settings: No changes found during synchronising settings.');
this.logService.trace('Settings: No changes found during synchronizing settings.');
}
this.logService.trace('Settings: Finised synchronising settings.');
this.logService.trace('Settings: Finised synchronizing settings.');
this.syncPreviewResultPromise = null;
this.setStatus(SyncStatus.Idle);
}
@@ -235,7 +235,7 @@ export class SettingsSynchroniser extends Disposable implements ISynchroniser {
// First time syncing to remote
else if (fileContent) {
this.logService.info('Settings: Remote settings does not exist. Synchronising settings for the first time.');
this.logService.info('Settings: Remote settings does not exist. Synchronizing settings for the first time.');
hasRemoteChanged = true;
previewContent = fileContent.value.toString();
}

View File

@@ -38,13 +38,13 @@ export function registerConfiguration(): IDisposable {
},
'configurationSync.enableSettings': {
type: 'boolean',
description: localize('configurationSync.enableSettings', "When enabled settings are synchronised while synchronising configuration."),
description: localize('configurationSync.enableSettings', "When enabled settings are synchronised while synchronizing configuration."),
default: true,
scope: ConfigurationScope.APPLICATION,
},
'configurationSync.enableExtensions': {
type: 'boolean',
description: localize('configurationSync.enableExtensions', "When enabled extensions are synchronised while synchronising configuration."),
description: localize('configurationSync.enableExtensions', "When enabled extensions are synchronised while synchronizing configuration."),
default: true,
scope: ConfigurationScope.APPLICATION,
},
@@ -91,6 +91,7 @@ export interface IUserData {
}
export enum UserDataSyncStoreErrorCode {
Unauthroized = 'Unauthroized',
Rejected = 'Rejected',
Unknown = 'Unknown'
}

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IUserDataSyncService, SyncStatus, ISynchroniser, IUserDataSyncStoreService, SyncSource, IUserDataSyncLogService } from 'vs/platform/userDataSync/common/userDataSync';
import { IUserDataSyncService, SyncStatus, ISynchroniser, IUserDataSyncStoreService, SyncSource, IUserDataSyncLogService, UserDataSyncStoreError, UserDataSyncStoreErrorCode } from 'vs/platform/userDataSync/common/userDataSync';
import { Disposable } from 'vs/base/common/lifecycle';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { SettingsSynchroniser } from 'vs/platform/userDataSync/common/settingsSync';
@@ -127,7 +127,7 @@ export class UserDataAutoSync extends Disposable {
@IConfigurationService private readonly configurationService: IConfigurationService,
@IUserDataSyncService private readonly userDataSyncService: IUserDataSyncService,
@IUserDataSyncStoreService userDataSyncStoreService: IUserDataSyncStoreService,
@IUserDataSyncLogService private readonly userDataSyncLogService: IUserDataSyncLogService,
@IUserDataSyncLogService private readonly logService: IUserDataSyncLogService,
@IAuthTokenService private readonly authTokenService: IAuthTokenService,
) {
super();
@@ -147,13 +147,13 @@ export class UserDataAutoSync extends Disposable {
this.enabled = enabled;
if (this.enabled) {
this.userDataSyncLogService.info('Syncing configuration started');
this.logService.info('Syncing configuration started');
this.sync(true);
return;
} else {
if (stopIfDisabled) {
this.userDataSyncService.stop();
this.userDataSyncLogService.info('Syncing configuration stopped.');
this.logService.info('Syncing configuration stopped.');
}
}
@@ -164,7 +164,14 @@ export class UserDataAutoSync extends Disposable {
try {
await this.userDataSyncService.sync();
} catch (e) {
this.userDataSyncLogService.error(e);
if (e instanceof UserDataSyncStoreError && e.code === UserDataSyncStoreErrorCode.Unauthroized) {
if (e instanceof UserDataSyncStoreError && e.code === UserDataSyncStoreErrorCode.Unauthroized && this.authTokenService.status === AuthTokenStatus.Disabled) {
this.logService.error('Sync failed because the server requires authorization. Please enable authorization.');
} else {
this.logService.error(e);
}
}
this.logService.error(e);
}
if (loop) {
await timeout(1000 * 5); // Loop sync for every 5s.

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { Disposable, } from 'vs/base/common/lifecycle';
import { IUserData, IUserDataSyncStoreService, UserDataSyncStoreErrorCode, UserDataSyncStoreError, IUserDataSyncLogService } from 'vs/platform/userDataSync/common/userDataSync';
import { IUserData, IUserDataSyncStoreService, UserDataSyncStoreErrorCode, UserDataSyncStoreError } from 'vs/platform/userDataSync/common/userDataSync';
import { IProductService } from 'vs/platform/product/common/productService';
import { IRequestService, asText, isSuccess } from 'vs/platform/request/common/request';
import { URI } from 'vs/base/common/uri';
@@ -22,7 +22,6 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn
constructor(
@IProductService private readonly productService: IProductService,
@IRequestService private readonly requestService: IRequestService,
@IUserDataSyncLogService private readonly logService: IUserDataSyncLogService,
@IAuthTokenService private readonly authTokenService: IAuthTokenService,
) {
super();
@@ -100,10 +99,11 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn
const context = await this.requestService.request(options, token);
if (context.res.statusCode === 401) {
// Not Authorized
this.logService.info('Authroization Failed.');
this.authTokenService.refreshToken();
Promise.reject('Authroization Failed.');
if (this.authTokenService.status !== AuthTokenStatus.Disabled) {
this.authTokenService.refreshToken();
}
// Throw Unauthorized Error
throw new UserDataSyncStoreError('Unauthorized', UserDataSyncStoreErrorCode.Unauthroized);
}
return context;