Skip to content

Commit d71be02

Browse files
authored
clean up: do not use settings sync store in settings (microsoft#187006)
* clean up: do not use settings sync store in settings * fix tests
1 parent 51ffcad commit d71be02

File tree

4 files changed

+23
-79
lines changed

4 files changed

+23
-79
lines changed

src/vs/platform/userDataSync/common/settingsSync.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1818
import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity';
1919
import { IUserDataProfile, IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile';
2020
import { AbstractInitializer, AbstractJsonFileSynchroniser, IAcceptResult, IFileResourcePreview, IMergeResult } from 'vs/platform/userDataSync/common/abstractSynchronizer';
21-
import { edit } from 'vs/platform/userDataSync/common/content';
2221
import { getIgnoredSettings, isEmpty, merge, updateIgnoredSettings } from 'vs/platform/userDataSync/common/settingsMerge';
23-
import { Change, CONFIGURATION_SYNC_STORE_KEY, IRemoteUserData, IUserDataSyncBackupStoreService, IUserDataSyncConfiguration, IUserDataSynchroniser, IUserDataSyncLogService, IUserDataSyncEnablementService, IUserDataSyncStoreService, IUserDataSyncUtilService, SyncResource, UserDataSyncError, UserDataSyncErrorCode, USER_DATA_SYNC_CONFIGURATION_SCOPE, USER_DATA_SYNC_SCHEME, IUserDataResourceManifest } from 'vs/platform/userDataSync/common/userDataSync';
22+
import { Change, IRemoteUserData, IUserDataSyncBackupStoreService, IUserDataSyncConfiguration, IUserDataSynchroniser, IUserDataSyncLogService, IUserDataSyncEnablementService, IUserDataSyncStoreService, IUserDataSyncUtilService, SyncResource, UserDataSyncError, UserDataSyncErrorCode, USER_DATA_SYNC_CONFIGURATION_SCOPE, USER_DATA_SYNC_SCHEME, IUserDataResourceManifest } from 'vs/platform/userDataSync/common/userDataSync';
2423

2524
interface ISettingsResourcePreview extends IFileResourcePreview {
2625
previewResult: IMergeResult;
@@ -267,9 +266,7 @@ export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implement
267266
try {
268267
const localFileContent = await this.getLocalFileContent();
269268
if (localFileContent) {
270-
const formatUtils = await this.getFormattingOptions();
271-
const content = edit(localFileContent.value.toString(), [CONFIGURATION_SYNC_STORE_KEY], undefined, formatUtils);
272-
return !isEmpty(content);
269+
return !isEmpty(localFileContent.value.toString());
273270
}
274271
} catch (error) {
275272
if ((<FileOperationError>error).fileOperationResult !== FileOperationResult.FILE_NOT_FOUND) {

src/vs/platform/userDataSync/common/userDataSync.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ import { ILogService } from 'vs/platform/log/common/log';
2323
import { Registry } from 'vs/platform/registry/common/platform';
2424
import { IUserDataProfile } from 'vs/platform/userDataProfile/common/userDataProfile';
2525

26-
export const CONFIGURATION_SYNC_STORE_KEY = 'configurationSync.store';
27-
2826
export function getDisallowedIgnoredSettings(): string[] {
2927
const allSettings = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration).getConfigurationProperties();
3028
return Object.keys(allSettings).filter(setting => !!allSettings[setting].disallowSyncIgnore);
@@ -35,7 +33,7 @@ export function getDefaultIgnoredSettings(): string[] {
3533
const ignoreSyncSettings = Object.keys(allSettings).filter(setting => !!allSettings[setting].ignoreSync);
3634
const machineSettings = Object.keys(allSettings).filter(setting => allSettings[setting].scope === ConfigurationScope.MACHINE || allSettings[setting].scope === ConfigurationScope.MACHINE_OVERRIDABLE);
3735
const disallowedSettings = getDisallowedIgnoredSettings();
38-
return distinct([CONFIGURATION_SYNC_STORE_KEY, ...ignoreSyncSettings, ...machineSettings, ...disallowedSettings]);
36+
return distinct([...ignoreSyncSettings, ...machineSettings, ...disallowedSettings]);
3937
}
4038

4139
export const USER_DATA_SYNC_CONFIGURATION_SCOPE = 'settingsSync';
@@ -94,7 +92,7 @@ export function registerConfiguration(): IDisposable {
9492
const jsonRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);
9593
const registerIgnoredSettingsSchema = () => {
9694
const disallowedIgnoredSettings = getDisallowedIgnoredSettings();
97-
const defaultIgnoredSettings = getDefaultIgnoredSettings().filter(s => s !== CONFIGURATION_SYNC_STORE_KEY);
95+
const defaultIgnoredSettings = getDefaultIgnoredSettings();
9896
const settings = Object.keys(allSettings.properties).filter(setting => !defaultIgnoredSettings.includes(setting));
9997
const ignoredSettings = defaultIgnoredSettings.filter(setting => !disallowedIgnoredSettings.includes(setting));
10098
const ignoredSettingsSchema: IJSONSchema = {

src/vs/platform/userDataSync/common/userDataSyncStoreService.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ import { IProductService } from 'vs/platform/product/common/productService';
2323
import { asJson, asText, asTextOrError, IRequestService, isSuccess as isSuccessContext } from 'vs/platform/request/common/request';
2424
import { getServiceMachineId } from 'vs/platform/externalServices/common/serviceMachineId';
2525
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
26-
import { CONFIGURATION_SYNC_STORE_KEY, HEADER_EXECUTION_ID, HEADER_OPERATION_ID, IAuthenticationProvider, IResourceRefHandle, IUserData, IUserDataManifest, IUserDataSyncLogService, IUserDataSyncStore, IUserDataSyncStoreManagementService, IUserDataSyncStoreService, ServerResource, SYNC_SERVICE_URL_TYPE, UserDataSyncErrorCode, UserDataSyncStoreError, UserDataSyncStoreType } from 'vs/platform/userDataSync/common/userDataSync';
26+
import { HEADER_EXECUTION_ID, HEADER_OPERATION_ID, IAuthenticationProvider, IResourceRefHandle, IUserData, IUserDataManifest, IUserDataSyncLogService, IUserDataSyncStore, IUserDataSyncStoreManagementService, IUserDataSyncStoreService, ServerResource, SYNC_SERVICE_URL_TYPE, UserDataSyncErrorCode, UserDataSyncStoreError, UserDataSyncStoreType } from 'vs/platform/userDataSync/common/userDataSync';
2727

28+
const CONFIGURATION_SYNC_STORE_KEY = 'configurationSync.store';
2829
const SYNC_PREVIOUS_STORE = 'sync.previous.store';
2930
const DONOT_MAKE_REQUESTS_UNTIL_KEY = 'sync.donot-make-requests-until';
3031
const USER_SESSION_ID_KEY = 'sync.user-session-id';
@@ -61,27 +62,27 @@ export abstract class AbstractUserDataSyncStoreManagementService extends Disposa
6162
}
6263

6364
protected updateUserDataSyncStore(): void {
64-
this._userDataSyncStore = this.toUserDataSyncStore(this.productService[CONFIGURATION_SYNC_STORE_KEY], this.configurationService.getValue<ConfigurationSyncStore>(CONFIGURATION_SYNC_STORE_KEY));
65+
this._userDataSyncStore = this.toUserDataSyncStore(this.productService[CONFIGURATION_SYNC_STORE_KEY]);
6566
this._onDidChangeUserDataSyncStore.fire();
6667
}
6768

68-
protected toUserDataSyncStore(productStore: ConfigurationSyncStore & { web?: ConfigurationSyncStore } | undefined, configuredStore?: ConfigurationSyncStore): UserDataSyncStore | undefined {
69+
protected toUserDataSyncStore(configurationSyncStore: ConfigurationSyncStore & { web?: ConfigurationSyncStore } | undefined): UserDataSyncStore | undefined {
70+
if (!configurationSyncStore) {
71+
return undefined;
72+
}
6973
// Check for web overrides for backward compatibility while reading previous store
70-
productStore = isWeb && productStore?.web ? { ...productStore, ...productStore.web } : productStore;
71-
const value: Partial<ConfigurationSyncStore> = { ...(productStore || {}), ...(configuredStore || {}) };
72-
if (value
73-
&& isString(value.url)
74-
&& isObject(value.authenticationProviders)
75-
&& Object.keys(value.authenticationProviders).every(authenticationProviderId => Array.isArray(value!.authenticationProviders![authenticationProviderId].scopes))
74+
configurationSyncStore = isWeb && configurationSyncStore.web ? { ...configurationSyncStore, ...configurationSyncStore.web } : configurationSyncStore;
75+
if (isString(configurationSyncStore.url)
76+
&& isObject(configurationSyncStore.authenticationProviders)
77+
&& Object.keys(configurationSyncStore.authenticationProviders).every(authenticationProviderId => Array.isArray(configurationSyncStore!.authenticationProviders![authenticationProviderId].scopes))
7678
) {
77-
const syncStore = value as ConfigurationSyncStore;
78-
const canSwitch = !!syncStore.canSwitch && !configuredStore?.url;
79+
const syncStore = configurationSyncStore as ConfigurationSyncStore;
80+
const canSwitch = !!syncStore.canSwitch;
7981
const defaultType: UserDataSyncStoreType = syncStore.url === syncStore.insidersUrl ? 'insiders' : 'stable';
8082
const type: UserDataSyncStoreType = (canSwitch ? this.userDataSyncStoreType : undefined) || defaultType;
81-
const url = configuredStore?.url ||
82-
(type === 'insiders' ? syncStore.insidersUrl
83-
: type === 'stable' ? syncStore.stableUrl
84-
: syncStore.url);
83+
const url = type === 'insiders' ? syncStore.insidersUrl
84+
: type === 'stable' ? syncStore.stableUrl
85+
: syncStore.url;
8586
return {
8687
url: URI.parse(url),
8788
type,

src/vs/platform/userDataSync/test/common/userDataSyncStoreService.test.ts

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,71 +5,19 @@
55

66
import * as assert from 'assert';
77
import { timeout } from 'vs/base/common/async';
8-
import { newWriteableBufferStream, VSBuffer } from 'vs/base/common/buffer';
8+
import { newWriteableBufferStream } from 'vs/base/common/buffer';
99
import { CancellationToken } from 'vs/base/common/cancellation';
1010
import { Event } from 'vs/base/common/event';
1111
import { DisposableStore } from 'vs/base/common/lifecycle';
1212
import { isWeb } from 'vs/base/common/platform';
13-
import { ConfigurationSyncStore } from 'vs/base/common/product';
14-
import { URI } from 'vs/base/common/uri';
1513
import { runWithFakedTimers } from 'vs/base/test/common/timeTravelScheduler';
16-
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
17-
import { IFileService } from 'vs/platform/files/common/files';
1814
import { NullLogService } from 'vs/platform/log/common/log';
19-
import product from 'vs/platform/product/common/product';
2015
import { IProductService } from 'vs/platform/product/common/productService';
2116
import { IRequestService } from 'vs/platform/request/common/request';
22-
import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile';
23-
import { IUserDataSyncStore, IUserDataSyncStoreManagementService, IUserDataSyncStoreService, SyncResource, UserDataSyncErrorCode, UserDataSyncStoreError } from 'vs/platform/userDataSync/common/userDataSync';
24-
import { RequestsSession, UserDataSyncStoreManagementService, UserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSyncStoreService';
17+
import { IUserDataSyncStoreService, SyncResource, UserDataSyncErrorCode, UserDataSyncStoreError } from 'vs/platform/userDataSync/common/userDataSync';
18+
import { RequestsSession, UserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSyncStoreService';
2519
import { UserDataSyncClient, UserDataSyncTestServer } from 'vs/platform/userDataSync/test/common/userDataSyncClient';
2620

27-
suite('UserDataSyncStoreManagementService', () => {
28-
const disposableStore = new DisposableStore();
29-
30-
teardown(() => disposableStore.clear());
31-
32-
test('test sync store is read from settings', async () => {
33-
const client = disposableStore.add(new UserDataSyncClient(new UserDataSyncTestServer()));
34-
await client.setUp();
35-
36-
client.instantiationService.stub(IProductService, {
37-
_serviceBrand: undefined, ...product, ...{
38-
'configurationSync.store': undefined
39-
}
40-
});
41-
42-
const configuredStore: ConfigurationSyncStore = {
43-
url: 'http://configureHost:3000',
44-
stableUrl: 'http://configureHost:3000',
45-
insidersUrl: 'http://configureHost:3000',
46-
canSwitch: false,
47-
authenticationProviders: { 'configuredAuthProvider': { scopes: [] } }
48-
};
49-
await client.instantiationService.get(IFileService).writeFile(client.instantiationService.get(IUserDataProfilesService).defaultProfile.settingsResource, VSBuffer.fromString(JSON.stringify({
50-
'configurationSync.store': configuredStore
51-
})));
52-
await client.instantiationService.get(IConfigurationService).reloadConfiguration();
53-
54-
const expected: IUserDataSyncStore = {
55-
url: URI.parse('http://configureHost:3000'),
56-
type: 'stable',
57-
defaultUrl: URI.parse('http://configureHost:3000'),
58-
stableUrl: URI.parse('http://configureHost:3000'),
59-
insidersUrl: URI.parse('http://configureHost:3000'),
60-
canSwitch: false,
61-
authenticationProviders: [{ id: 'configuredAuthProvider', scopes: [] }]
62-
};
63-
64-
const testObject: IUserDataSyncStoreManagementService = disposableStore.add(client.instantiationService.createInstance(UserDataSyncStoreManagementService));
65-
66-
assert.strictEqual(testObject.userDataSyncStore?.url.toString(), expected.url.toString());
67-
assert.strictEqual(testObject.userDataSyncStore?.defaultUrl.toString(), expected.defaultUrl.toString());
68-
assert.deepStrictEqual(testObject.userDataSyncStore?.authenticationProviders, expected.authenticationProviders);
69-
});
70-
71-
});
72-
7321
suite('UserDataSyncStoreService', () => {
7422

7523
const disposableStore = new DisposableStore();

0 commit comments

Comments
 (0)