mirror of
https://github.com/Microsoft/vscode
synced 2024-10-13 23:09:01 +00:00
move user data sync store service to platform
This commit is contained in:
parent
1ee616d802
commit
8b22e026a2
|
@ -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',
|
||||
|
|
|
@ -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);
|
|
@ -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);
|
||||
},
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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>;
|
||||
|
||||
}
|
|
@ -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)) {
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue