#103405 check if sync is on

This commit is contained in:
Sandeep Somavarapu
2020-08-29 12:14:46 +02:00
parent a8cb99a6b1
commit b96ce60e2d
10 changed files with 54 additions and 70 deletions

View File

@@ -0,0 +1,46 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IUserDataAutoSyncService, UserDataSyncError, IUserDataSyncStoreManagementService } from 'vs/platform/userDataSync/common/userDataSync';
import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService';
import { IChannel } from 'vs/base/parts/ipc/common/ipc';
import { Event } from 'vs/base/common/event';
import { UserDataAutoSyncEnablementService } from 'vs/platform/userDataSync/common/userDataAutoSyncService';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
class UserDataAutoSyncService extends UserDataAutoSyncEnablementService implements IUserDataAutoSyncService {
declare readonly _serviceBrand: undefined;
private readonly channel: IChannel;
get onError(): Event<UserDataSyncError> { return Event.map(this.channel.listen<Error>('onError'), e => UserDataSyncError.toUserDataSyncError(e)); }
constructor(
@IStorageService storageService: IStorageService,
@IEnvironmentService environmentService: IEnvironmentService,
@IUserDataSyncStoreManagementService userDataSyncStoreManagementService: IUserDataSyncStoreManagementService,
@ISharedProcessService sharedProcessService: ISharedProcessService,
) {
super(storageService, environmentService, userDataSyncStoreManagementService);
this.channel = sharedProcessService.getChannel('userDataAutoSync');
}
triggerSync(sources: string[], hasToLimitSync: boolean, disableCache: boolean): Promise<void> {
return this.channel.call('triggerSync', [sources, hasToLimitSync, disableCache]);
}
turnOn(): Promise<void> {
return this.channel.call('turnOn');
}
turnOff(everywhere: boolean): Promise<void> {
return this.channel.call('turnOff', [everywhere]);
}
}
registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService);

View File

@@ -0,0 +1,51 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IUserDataSyncStoreManagementService, UserDataSyncStoreType, IUserDataSyncStore } from 'vs/platform/userDataSync/common/userDataSync';
import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService';
import { IChannel } from 'vs/base/parts/ipc/common/ipc';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { AbstractUserDataSyncStoreManagementService } from 'vs/platform/userDataSync/common/userDataSyncStoreService';
import { IProductService } from 'vs/platform/product/common/productService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { URI } from 'vs/base/common/uri';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
class UserDataSyncStoreManagementService extends AbstractUserDataSyncStoreManagementService implements IUserDataSyncStoreManagementService {
private readonly channel: IChannel;
constructor(
@IProductService productService: IProductService,
@IConfigurationService configurationService: IConfigurationService,
@IStorageService storageService: IStorageService,
@ISharedProcessService sharedProcessService: ISharedProcessService,
) {
super(productService, configurationService, storageService);
this.channel = sharedProcessService.getChannel('userDataSyncStoreManagement');
}
async switch(type: UserDataSyncStoreType): Promise<void> {
return this.channel.call('switch', [type]);
}
async getPreviousUserDataSyncStore(): Promise<IUserDataSyncStore> {
const userDataSyncStore = await this.channel.call<IUserDataSyncStore>('getPreviousUserDataSyncStore');
return this.revive(userDataSyncStore);
}
private revive(userDataSyncStore: IUserDataSyncStore): IUserDataSyncStore {
return {
url: URI.revive(userDataSyncStore.url),
defaultUrl: URI.revive(userDataSyncStore.defaultUrl),
insidersUrl: URI.revive(userDataSyncStore.insidersUrl),
stableUrl: URI.revive(userDataSyncStore.stableUrl),
authenticationProviders: userDataSyncStore.authenticationProviders,
};
}
}
registerSingleton(IUserDataSyncStoreManagementService, UserDataSyncStoreManagementService);