From 8b22e026a28c61dfe8368b13d93a54579d8a6b18 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 16 Sep 2019 23:31:14 +0200 Subject: [PATCH] move user data sync store service to platform --- .../userDataSync/common/userDataSync.ts | 18 +++++++++++-- .../common/userDataSyncStoreService.ts | 22 +++------------- .../api/browser/mainThreadUserData.ts | 6 ++--- .../userData/browser/userData.contribution.ts | 5 ++-- .../services/userData/common/settingsSync.ts | 3 +-- .../services/userData/common/userData.ts | 25 ------------------- .../userData/common/userDataSyncService.ts | 11 ++++---- src/vs/workbench/workbench.common.main.ts | 4 ++- 8 files changed, 34 insertions(+), 60 deletions(-) rename src/vs/{workbench/services/userData => platform/userDataSync}/common/userDataSyncStoreService.ts (72%) delete mode 100644 src/vs/workbench/services/userData/common/userData.ts diff --git a/src/vs/platform/userDataSync/common/userDataSync.ts b/src/vs/platform/userDataSync/common/userDataSync.ts index e4729ebdb3e..4ec972830fc 100644 --- a/src/vs/platform/userDataSync/common/userDataSync.ts +++ b/src/vs/platform/userDataSync/common/userDataSync.ts @@ -58,13 +58,27 @@ export class UserDataSyncStoreError extends Error { } export interface IUserDataSyncStore { + readonly name: string; + read(key: string): Promise; + write(key: string, content: string, ref: string | null): Promise; +} + +export const IUserDataSyncStoreService = createDecorator('IUserDataSyncStoreService'); + +export interface IUserDataSyncStoreService { + _serviceBrand: undefined; + + readonly onDidChangeEnablement: Event; + readonly enabled: boolean; + + registerUserDataSyncStore(userDataSyncStore: IUserDataSyncStore): void; + deregisterUserDataSyncStore(): void; read(key: string): Promise; - write(key: string, content: string, ref: string | null): Promise; - } + export enum SyncStatus { Uninitialized = 'uninitialized', Idle = 'idle', diff --git a/src/vs/workbench/services/userData/common/userDataSyncStoreService.ts b/src/vs/platform/userDataSync/common/userDataSyncStoreService.ts similarity index 72% rename from src/vs/workbench/services/userData/common/userDataSyncStoreService.ts rename to src/vs/platform/userDataSync/common/userDataSyncStoreService.ts index a147fc049a5..912746c25ac 100644 --- a/src/vs/workbench/services/userData/common/userDataSyncStoreService.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncStoreService.ts @@ -4,10 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { Disposable, } from 'vs/base/common/lifecycle'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { Emitter, Event } from 'vs/base/common/event'; -import { IUserDataSyncStore, IUserData, UserDataSyncStoreError, toUserDataSyncStoreErrorCode } from 'vs/platform/userDataSync/common/userDataSync'; -import { IUserDataSyncStoreService } from 'vs/workbench/services/userData/common/userData'; +import { IUserDataSyncStore, IUserData, UserDataSyncStoreError, toUserDataSyncStoreErrorCode, IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; import { ILogService } from 'vs/platform/log/common/log'; export class UserDataSyncStoreService extends Disposable implements IUserDataSyncStoreService { @@ -15,8 +13,8 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn _serviceBrand: any; private userDataSyncStore: IUserDataSyncStore | null = null; - private name: string | null = null; + get enabled(): boolean { return !!this.userDataSyncStore; } private readonly _onDidChangeEnablement: Emitter = this._register(new Emitter()); readonly onDidChangeEnablement: Event = this._onDidChangeEnablement.event; @@ -26,30 +24,20 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn super(); } - registerUserDataSyncStore(name: string, userDataSyncStore: IUserDataSyncStore): void { + registerUserDataSyncStore(userDataSyncStore: IUserDataSyncStore): void { if (this.userDataSyncStore) { - this.logService.warn(`A user data sync store '${this.name}' already registered. Hence ignoring the newly registered '${name}' store.`); + this.logService.warn(`A user data sync store '${this.userDataSyncStore.name}' already registered. Hence ignoring the newly registered '${userDataSyncStore.name}' store.`); return; } this.userDataSyncStore = userDataSyncStore; - this.name = name; this._onDidChangeEnablement.fire(true); } deregisterUserDataSyncStore(): void { this.userDataSyncStore = null; - this.name = null; this._onDidChangeEnablement.fire(false); } - getName(): string | null { - return this.name; - } - - isEnabled(): boolean { - return !!this.userDataSyncStore; - } - read(key: string): Promise { if (!this.userDataSyncStore) { throw new Error('No user sync store exists.'); @@ -67,5 +55,3 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn } } - -registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService); diff --git a/src/vs/workbench/api/browser/mainThreadUserData.ts b/src/vs/workbench/api/browser/mainThreadUserData.ts index a9358a1b379..6893e0ce18c 100644 --- a/src/vs/workbench/api/browser/mainThreadUserData.ts +++ b/src/vs/workbench/api/browser/mainThreadUserData.ts @@ -6,8 +6,7 @@ import { Disposable, toDisposable } from 'vs/base/common/lifecycle'; import { MainContext, ExtHostContext, IExtHostContext, MainThreadUserDataShape, ExtHostUserDataShape } from '../common/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; -import { IUserData } from 'vs/platform/userDataSync/common/userDataSync'; -import { IUserDataSyncStoreService } from 'vs/workbench/services/userData/common/userData'; +import { IUserData, IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; @extHostNamedCustomer(MainContext.MainThreadUserData) export class MainThreadUserData extends Disposable implements MainThreadUserDataShape { @@ -25,7 +24,8 @@ export class MainThreadUserData extends Disposable implements MainThreadUserData $registerUserDataProvider(name: string): void { const proxy = this.proxy; - this.userDataSyncStoreService.registerUserDataSyncStore(name, { + this.userDataSyncStoreService.registerUserDataSyncStore({ + name, read(key: string): Promise { return proxy.$read(key); }, diff --git a/src/vs/workbench/contrib/userData/browser/userData.contribution.ts b/src/vs/workbench/contrib/userData/browser/userData.contribution.ts index 18669c643ec..8d721195a33 100644 --- a/src/vs/workbench/contrib/userData/browser/userData.contribution.ts +++ b/src/vs/workbench/contrib/userData/browser/userData.contribution.ts @@ -4,8 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; -import { IUserDataSyncService, SyncStatus, USER_DATA_PREVIEW_SCHEME } from 'vs/platform/userDataSync/common/userDataSync'; -import { IUserDataSyncStoreService } from 'vs/workbench/services/userData/common/userData'; +import { IUserDataSyncService, SyncStatus, USER_DATA_PREVIEW_SCHEME, IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; import { localize } from 'vs/nls'; import { Disposable, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { CommandsRegistry } from 'vs/platform/commands/common/commands'; @@ -63,7 +62,7 @@ class UserDataSyncContribution extends Disposable implements IWorkbenchContribut } private async sync(loop: boolean): Promise { - if (this.configurationService.getValue('userConfiguration.enableSync') && this.userDataSyncStoreService.isEnabled()) { + if (this.configurationService.getValue('userConfiguration.enableSync') && this.userDataSyncStoreService.enabled) { try { await this.userDataSyncService.sync(); } catch (e) { diff --git a/src/vs/workbench/services/userData/common/settingsSync.ts b/src/vs/workbench/services/userData/common/settingsSync.ts index 9cd6edc227e..3b98368d8a0 100644 --- a/src/vs/workbench/services/userData/common/settingsSync.ts +++ b/src/vs/workbench/services/userData/common/settingsSync.ts @@ -6,8 +6,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { IFileService, FileSystemProviderErrorCode, FileSystemProviderError, IFileContent } from 'vs/platform/files/common/files'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -import { IUserData, UserDataSyncStoreError, UserDataSyncStoreErrorCode, ISynchroniser, SyncStatus, SETTINGS_PREVIEW_RESOURCE, ISettingsMergeService } from 'vs/platform/userDataSync/common/userDataSync'; -import { IUserDataSyncStoreService } from 'vs/workbench/services/userData/common/userData'; +import { IUserData, UserDataSyncStoreError, UserDataSyncStoreErrorCode, ISynchroniser, SyncStatus, SETTINGS_PREVIEW_RESOURCE, ISettingsMergeService, IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; import { VSBuffer } from 'vs/base/common/buffer'; import { parse, ParseError } from 'vs/base/common/json'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; diff --git a/src/vs/workbench/services/userData/common/userData.ts b/src/vs/workbench/services/userData/common/userData.ts deleted file mode 100644 index 7d4b5192d81..00000000000 --- a/src/vs/workbench/services/userData/common/userData.ts +++ /dev/null @@ -1,25 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { Event } from 'vs/base/common/event'; -import { IUserDataSyncStore, IUserData } from 'vs/platform/userDataSync/common/userDataSync'; - -export const IUserDataSyncStoreService = createDecorator('IUserDataSyncStoreService'); - -export interface IUserDataSyncStoreService { - - _serviceBrand: undefined; - - readonly onDidChangeEnablement: Event; - isEnabled(): boolean; - - registerUserDataSyncStore(name: string, userDataSyncStore: IUserDataSyncStore): void; - deregisterUserDataSyncStore(): void; - getName(): string | null; - read(key: string): Promise; - write(key: string, content: string, ref: string | null): Promise; - -} diff --git a/src/vs/workbench/services/userData/common/userDataSyncService.ts b/src/vs/workbench/services/userData/common/userDataSyncService.ts index 203da87ab69..18b1a975a10 100644 --- a/src/vs/workbench/services/userData/common/userDataSyncService.ts +++ b/src/vs/workbench/services/userData/common/userDataSyncService.ts @@ -3,8 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IUserDataSyncService, SyncStatus, ISynchroniser, USER_DATA_PREVIEW_SCHEME } from 'vs/platform/userDataSync/common/userDataSync'; -import { IUserDataSyncStoreService } from 'vs/workbench/services/userData/common/userData'; +import { IUserDataSyncService, SyncStatus, ISynchroniser, USER_DATA_PREVIEW_SCHEME, IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; import { Disposable } from 'vs/base/common/lifecycle'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; @@ -42,7 +41,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ } async sync(): Promise { - if (!this.userDataSyncStoreService.isEnabled()) { + if (!this.userDataSyncStoreService.enabled) { throw new Error('Not enabled'); } for (const synchroniser of this.synchronisers) { @@ -54,7 +53,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ } async continueSync(): Promise { - if (!this.userDataSyncStoreService.isEnabled()) { + if (!this.userDataSyncStoreService.enabled) { throw new Error('Not enabled'); } for (const synchroniser of this.synchronisers) { @@ -66,7 +65,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ } handleConflicts(): boolean { - if (!this.userDataSyncStoreService.isEnabled()) { + if (!this.userDataSyncStoreService.enabled) { throw new Error('Not enabled'); } for (const synchroniser of this.synchronisers) { @@ -89,7 +88,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ } private computeStatus(): SyncStatus { - if (!this.userDataSyncStoreService.isEnabled()) { + if (!this.userDataSyncStoreService.enabled) { return SyncStatus.Uninitialized; } if (this.synchronisers.some(s => s.status === SyncStatus.HasConflicts)) { diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts index 94dd9df5881..3b9fd5060ff 100644 --- a/src/vs/workbench/workbench.common.main.ts +++ b/src/vs/workbench/workbench.common.main.ts @@ -79,7 +79,6 @@ import 'vs/workbench/services/label/common/labelService'; import 'vs/workbench/services/extensionManagement/common/extensionEnablementService'; import 'vs/workbench/services/notification/common/notificationService'; import 'vs/workbench/services/extensions/common/staticExtensions'; -import 'vs/workbench/services/userData/common/userDataSyncStoreService'; import 'vs/workbench/services/userData/common/userDataSyncService'; import 'vs/workbench/services/userData/common/settingsMergeService'; import 'vs/workbench/services/workspace/browser/workspaceEditingService'; @@ -108,6 +107,8 @@ import { IDownloadService } from 'vs/platform/download/common/download'; import { DownloadService } from 'vs/platform/download/common/downloadService'; import { OpenerService } from 'vs/editor/browser/services/openerService'; import { IOpenerService } from 'vs/platform/opener/common/opener'; +import { IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; +import { UserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSyncStoreService'; registerSingleton(IExtensionGalleryService, ExtensionGalleryService, true); registerSingleton(IContextViewService, ContextViewService, true); @@ -121,6 +122,7 @@ registerSingleton(ITextResourceConfigurationService, TextResourceConfigurationSe registerSingleton(IMenuService, MenuService, true); registerSingleton(IDownloadService, DownloadService, true); registerSingleton(IOpenerService, OpenerService, true); +registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService); //#endregion