move user data sync store service to platform

This commit is contained in:
Sandeep Somavarapu 2019-09-16 23:31:14 +02:00
parent 1ee616d802
commit 8b22e026a2
8 changed files with 34 additions and 60 deletions

View file

@ -58,13 +58,27 @@ export class UserDataSyncStoreError extends Error {
}
export interface IUserDataSyncStore {
readonly name: string;
read(key: string): Promise<IUserData | null>;
write(key: string, content: string, ref: string | null): Promise<string>;
}
export const IUserDataSyncStoreService = createDecorator<IUserDataSyncStoreService>('IUserDataSyncStoreService');
export interface IUserDataSyncStoreService {
_serviceBrand: undefined;
readonly onDidChangeEnablement: Event<boolean>;
readonly enabled: boolean;
registerUserDataSyncStore(userDataSyncStore: IUserDataSyncStore): void;
deregisterUserDataSyncStore(): void;
read(key: string): Promise<IUserData | null>;
write(key: string, content: string, ref: string | null): Promise<string>;
}
export enum SyncStatus {
Uninitialized = 'uninitialized',
Idle = 'idle',

View file

@ -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<boolean> = this._register(new Emitter<boolean>());
readonly onDidChangeEnablement: Event<boolean> = 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<IUserData | null> {
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);

View file

@ -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<IUserData | null> {
return proxy.$read(key);
},

View file

@ -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<void> {
if (this.configurationService.getValue<boolean>('userConfiguration.enableSync') && this.userDataSyncStoreService.isEnabled()) {
if (this.configurationService.getValue<boolean>('userConfiguration.enableSync') && this.userDataSyncStoreService.enabled) {
try {
await this.userDataSyncService.sync();
} catch (e) {

View file

@ -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';

View file

@ -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>('IUserDataSyncStoreService');
export interface IUserDataSyncStoreService {
_serviceBrand: undefined;
readonly onDidChangeEnablement: Event<boolean>;
isEnabled(): boolean;
registerUserDataSyncStore(name: string, userDataSyncStore: IUserDataSyncStore): void;
deregisterUserDataSyncStore(): void;
getName(): string | null;
read(key: string): Promise<IUserData | null>;
write(key: string, content: string, ref: string | null): Promise<string>;
}

View file

@ -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<boolean> {
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<boolean> {
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)) {

View file

@ -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