提交 66d6359e 编写于 作者: B Benjamin Pasero

show message when entering workspace (for #31182)

上级 c1eb07f7
......@@ -16,7 +16,7 @@ import { IWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
import { IWorkspaceConfigurationService } from 'vs/workbench/services/configuration/common/configuration';
import { WorkspaceService } from 'vs/workbench/services/configuration/node/configurationService';
import { migrateStorageToMultiRootWorkspace } from 'vs/platform/storage/common/migration';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { StorageService } from 'vs/platform/storage/common/storageService';
import { ConfigurationScope, IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry';
import { Registry } from 'vs/platform/registry/common/platform';
......@@ -28,11 +28,15 @@ import { ICommandService } from 'vs/platform/commands/common/commands';
import { distinct } from 'vs/base/common/arrays';
import { isLinux } from 'vs/base/common/platform';
import { isEqual } from 'vs/base/common/resources';
import { Action } from 'vs/base/common/actions';
import product from 'vs/platform/node/product';
export class WorkspaceEditingService implements IWorkspaceEditingService {
public _serviceBrand: any;
private static INFO_MESSAGE_KEY = 'enterWorkspace.message';
constructor(
@IJSONEditingService private jsonEditingService: IJSONEditingService,
@IWorkspaceContextService private contextService: WorkspaceService,
......@@ -149,6 +153,9 @@ export class WorkspaceEditingService implements IWorkspaceEditingService {
if (result) {
return this.migrate(result.workspace).then(() => {
// Show message to user (once)
this.informUserOnce(); // TODO@Ben remove me after a couple of releases
// Reinitialize backup service
const backupFileService = this.backupFileService as BackupFileService; // TODO@Ben ugly cast
backupFileService.initialize(result.backupPath);
......@@ -167,6 +174,53 @@ export class WorkspaceEditingService implements IWorkspaceEditingService {
});
}
private informUserOnce(): void {
if (product.quality !== 'stable') {
return; // only for stable
}
if (this.storageService.getBoolean(WorkspaceEditingService.INFO_MESSAGE_KEY)) {
return; // user does not want to see it again
}
const okAction = new Action(
'enterWorkspace.ok',
nls.localize('integrity.ok', "OK"),
null,
true,
() => TPromise.as(true)
);
const dontShowAgainAction = new Action(
'enterWorkspace.dontShowAgain',
nls.localize('enterWorkspace.dontShowAgain', "Don't Show Again"),
null,
true,
() => {
this.storageService.store(WorkspaceEditingService.INFO_MESSAGE_KEY, true, StorageScope.GLOBAL);
return TPromise.as(true);
}
);
const moreInfoAction = new Action(
'enterWorkspace.moreInfo',
nls.localize('enterWorkspace.moreInfo', "More Information"),
null,
true,
() => {
const uri = URI.parse(product.documentationUrl);
window.open(uri.toString(true));
return TPromise.as(true);
}
);
this.messageService.show(Severity.Info, {
message: nls.localize('enterWorkspace.prompt', "The opened workspace changed into a multi-root workspace."),
actions: [okAction, moreInfoAction, dontShowAgainAction]
});
}
private migrate(toWorkspace: IWorkspaceIdentifier): TPromise<void> {
// Storage (UI State) migration
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册