move user data sync store to workbench

This commit is contained in:
Sandeep Somavarapu
2019-09-17 16:56:44 +02:00
parent 5cc29271b5
commit b44a8ca309
4 changed files with 21 additions and 10 deletions
@@ -3,10 +3,12 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { Disposable, toDisposable } from 'vs/base/common/lifecycle'; import { Disposable } from 'vs/base/common/lifecycle';
import { MainContext, ExtHostContext, IExtHostContext, MainThreadUserDataShape, ExtHostUserDataShape } from '../common/extHost.protocol'; import { MainContext, ExtHostContext, IExtHostContext, MainThreadUserDataShape, ExtHostUserDataShape } from '../common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { IUserData, IUserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSync'; import { IUserData } from 'vs/platform/userDataSync/common/userDataSync';
import { Registry } from 'vs/platform/registry/common/platform';
import { IUserDataSyncStoresRegistry, Extensions } from 'vs/workbench/services/userDataSync/common/userDataSyncStores';
@extHostNamedCustomer(MainContext.MainThreadUserData) @extHostNamedCustomer(MainContext.MainThreadUserData)
export class MainThreadUserData extends Disposable implements MainThreadUserDataShape { export class MainThreadUserData extends Disposable implements MainThreadUserDataShape {
@@ -15,16 +17,14 @@ export class MainThreadUserData extends Disposable implements MainThreadUserData
constructor( constructor(
extHostContext: IExtHostContext, extHostContext: IExtHostContext,
@IUserDataSyncStoreService private readonly userDataSyncStoreService: IUserDataSyncStoreService
) { ) {
super(); super();
this.proxy = extHostContext.getProxy(ExtHostContext.ExtHostUserData); this.proxy = extHostContext.getProxy(ExtHostContext.ExtHostUserData);
this._register(toDisposable(() => this.userDataSyncStoreService.deregisterUserDataSyncStore()));
} }
$registerUserDataProvider(id: string, name: string): void { $registerUserDataProvider(id: string, name: string): void {
const proxy = this.proxy; const proxy = this.proxy;
this.userDataSyncStoreService.registerUserDataSyncStore({ Registry.as<IUserDataSyncStoresRegistry>(Extensions.UserDataSyncStoresRegistry).registerUserDataSyncStore({
id, id,
name, name,
read(key: string): Promise<IUserData | null> { read(key: string): Promise<IUserData | null> {
@@ -36,8 +36,13 @@ export class MainThreadUserData extends Disposable implements MainThreadUserData
}); });
} }
$deregisterUserDataProvider(): void { $deregisterUserDataProvider(id: string): void {
this.userDataSyncStoreService.deregisterUserDataSyncStore(); Registry.as<IUserDataSyncStoresRegistry>(Extensions.UserDataSyncStoresRegistry).deregisterUserDataSyncStore(id);
}
dispose(): void {
const registry = Registry.as<IUserDataSyncStoresRegistry>(Extensions.UserDataSyncStoresRegistry);
registry.all.forEach(store => registry.deregisterUserDataSyncStore(store.id));
} }
} }
@@ -148,7 +148,7 @@ export interface MainThreadConfigurationShape extends IDisposable {
export interface MainThreadUserDataShape extends IDisposable { export interface MainThreadUserDataShape extends IDisposable {
$registerUserDataProvider(id: string, name: string): void; $registerUserDataProvider(id: string, name: string): void;
$deregisterUserDataProvider(): void; $deregisterUserDataProvider(id: string): void;
} }
export interface MainThreadDiagnosticsShape extends IDisposable { export interface MainThreadDiagnosticsShape extends IDisposable {
@@ -28,7 +28,7 @@ export class ExtHostUserData implements ExtHostUserDataShape {
this.userDataProvider = userDataProvider; this.userDataProvider = userDataProvider;
this.name = name; this.name = name;
this.proxy.$registerUserDataProvider(id, name); this.proxy.$registerUserDataProvider(id, name);
return toDisposable(() => this.proxy.$deregisterUserDataProvider()); return toDisposable(() => this.proxy.$deregisterUserDataProvider(id));
} }
$read(key: string): Promise<IUserData | null> { $read(key: string): Promise<IUserData | null> {
@@ -4,11 +4,17 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { Event, Emitter } from 'vs/base/common/event'; import { Event, Emitter } from 'vs/base/common/event';
import { IUserDataSyncStore } from 'vs/platform/userDataSync/common/userDataSync'; import { IUserData } from 'vs/platform/userDataSync/common/userDataSync';
import { Disposable } from 'vs/base/common/lifecycle'; import { Disposable } from 'vs/base/common/lifecycle';
import { values } from 'vs/base/common/map'; import { values } from 'vs/base/common/map';
import { Registry } from 'vs/platform/registry/common/platform'; import { Registry } from 'vs/platform/registry/common/platform';
export interface IUserDataSyncStore {
readonly id: string;
readonly name: string;
read(key: string): Promise<IUserData | null>;
write(key: string, content: string, ref: string | null): Promise<string>;
}
export namespace Extensions { export namespace Extensions {
export const UserDataSyncStoresRegistry = 'workbench.registry.userData.syncStores'; export const UserDataSyncStoresRegistry = 'workbench.registry.userData.syncStores';