mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 19:18:59 +01:00
support switching settings sync services in web
synchronise setting sync service type in web show necessary prompts when services are changed
This commit is contained in:
@@ -31,6 +31,9 @@ import { URI } from 'vs/base/common/uri';
|
||||
import { IViewsService, ViewContainerLocation, IViewDescriptorService } from 'vs/workbench/common/views';
|
||||
import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle';
|
||||
import { isWeb } from 'vs/base/common/platform';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { UserDataSyncStoreClient } from 'vs/platform/userDataSync/common/userDataSyncStoreService';
|
||||
import { UserDataSyncStoreTypeSynchronizer } from 'vs/platform/userDataSync/common/globalStateSync';
|
||||
|
||||
type UserAccountClassification = {
|
||||
id: { classification: 'EndUserPseudonymizedInformation', purpose: 'BusinessInsight' };
|
||||
@@ -109,6 +112,7 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat
|
||||
@IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService,
|
||||
@IUserDataSyncStoreManagementService private readonly userDataSyncStoreManagementService: IUserDataSyncStoreManagementService,
|
||||
@ILifecycleService private readonly lifecycleService: ILifecycleService,
|
||||
@IInstantiationService private readonly instantiationService: IInstantiationService,
|
||||
) {
|
||||
super();
|
||||
this.syncEnablementContext = CONTEXT_SYNC_ENABLEMENT.bindTo(contextKeyService);
|
||||
@@ -280,6 +284,11 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat
|
||||
}
|
||||
|
||||
await this.userDataAutoSyncService.turnOn();
|
||||
|
||||
if (this.userDataSyncStoreManagementService.userDataSyncStore?.canSwitch) {
|
||||
await this.synchroniseUserDataSyncStoreType();
|
||||
}
|
||||
|
||||
this.notificationService.info(localize('sync turned on', "{0} is turned on", title));
|
||||
}
|
||||
|
||||
@@ -287,6 +296,25 @@ export class UserDataSyncWorkbenchService extends Disposable implements IUserDat
|
||||
return this.userDataAutoSyncService.turnOff(everywhere);
|
||||
}
|
||||
|
||||
async synchroniseUserDataSyncStoreType(): Promise<void> {
|
||||
if (!this.userDataSyncAccountService.account) {
|
||||
throw new Error('Cannot update because you are signed out from settings sync. Please sign in and try again.');
|
||||
}
|
||||
if (!isWeb || !this.userDataSyncStoreManagementService.userDataSyncStore) {
|
||||
// Not supported
|
||||
return;
|
||||
}
|
||||
|
||||
const userDataSyncStoreUrl = this.userDataSyncStoreManagementService.userDataSyncStore.type === 'insiders' ? this.userDataSyncStoreManagementService.userDataSyncStore.stableUrl : this.userDataSyncStoreManagementService.userDataSyncStore.insidersUrl;
|
||||
const userDataSyncStoreClient = this.instantiationService.createInstance(UserDataSyncStoreClient, userDataSyncStoreUrl);
|
||||
userDataSyncStoreClient.setAuthToken(this.userDataSyncAccountService.account.token, this.userDataSyncAccountService.account.authenticationProviderId);
|
||||
await this.instantiationService.createInstance(UserDataSyncStoreTypeSynchronizer, userDataSyncStoreClient).sync(this.userDataSyncStoreManagementService.userDataSyncStore.type);
|
||||
}
|
||||
|
||||
syncNow(): Promise<void> {
|
||||
return this.userDataAutoSyncService.triggerSync(['Sync Now'], false, true);
|
||||
}
|
||||
|
||||
private async onBeforeShutdown(manualSyncTask: IManualSyncTask): Promise<boolean> {
|
||||
const result = await this.dialogService.confirm({
|
||||
type: 'warning',
|
||||
|
||||
@@ -63,6 +63,9 @@ export interface IUserDataSyncWorkbenchService {
|
||||
|
||||
resetSyncedData(): Promise<void>;
|
||||
showSyncActivity(): Promise<void>;
|
||||
syncNow(): Promise<void>;
|
||||
|
||||
synchroniseUserDataSyncStoreType(): Promise<void>;
|
||||
}
|
||||
|
||||
export function getSyncAreaLabel(source: SyncResource): string {
|
||||
|
||||
Reference in New Issue
Block a user