remove preview flag check for ADS welcome page (#18280)

* remove preview flag for welcome page

* remove old welcome page

* remove vscode welcome page
This commit is contained in:
Alan Ren
2022-02-09 20:53:58 -08:00
committed by GitHub
parent f17e70472f
commit 250532f39d
5 changed files with 8 additions and 253 deletions

View File

@@ -9,10 +9,8 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { WelcomePageContribution, WelcomePageAction, WelcomeInputSerializer } from 'sql/workbench/contrib/welcome/page/browser/welcomePage'; // {{SQL CARBON EDIT}} use our welcome page
import { IWorkbenchActionRegistry, Extensions as ActionExtensions, CATEGORIES } from 'vs/workbench/common/actions'; // {{SQL CARBON EDIT}}
import { MenuId, MenuRegistry, SyncActionDescriptor } from 'vs/platform/actions/common/actions'; // {{SQL CARBON EDIT}}
import { WelcomePageContribution as WelcomePageContributionVs } from 'vs/workbench/contrib/welcome/page/browser/welcomePage'; // {{SQL CARBON EDIT}} use our welcome page
import { IConfigurationRegistry, Extensions as ConfigurationExtensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; // {{SQL CARBON EDIT}} - use our welcome page
import { workbenchConfigurationNodeBase } from 'vs/workbench/common/configuration';
import { EditorExtensions, IEditorFactoryRegistry } from 'vs/workbench/common/editor';
@@ -38,33 +36,22 @@ Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration)
}
});
// {{SQL CARBON EDIT}} - determine whether to show preview or stable welcome page
// {{SQL CARBON EDIT}}
class WelcomeContributions {
constructor(
@IConfigurationService configurationService: IConfigurationService,
) {
const previewFeaturesEnabled: boolean = configurationService.getValue('workbench')['enablePreviewFeatures'];
if (previewFeaturesEnabled) {
constructor() {
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench)
.registerWorkbenchContribution(WelcomePageContribution, LifecyclePhase.Restored);
Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions)
.registerWorkbenchAction(SyncActionDescriptor.create(WelcomePageAction, WelcomePageAction.ID, WelcomePageAction.LABEL), 'Help: Welcome', CATEGORIES.Help.value);
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench)
.registerWorkbenchContribution(WelcomePageContribution, LifecyclePhase.Restored);
Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions)
.registerWorkbenchAction(SyncActionDescriptor.create(WelcomePageAction, WelcomePageAction.ID, WelcomePageAction.LABEL), 'Help: Welcome', CATEGORIES.Help.value);
Registry.as<IEditorFactoryRegistry>(EditorExtensions.EditorFactory).registerEditorSerializer(WelcomeInputSerializer.ID, WelcomeInputSerializer);
} else {
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench)
.registerWorkbenchContribution(WelcomePageContributionVs, LifecyclePhase.Restored);
}
Registry.as<IEditorFactoryRegistry>(EditorExtensions.EditorFactory).registerEditorSerializer(WelcomeInputSerializer.ID, WelcomeInputSerializer);
}
}
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench)
.registerWorkbenchContribution(WelcomeContributions, LifecyclePhase.Starting);
// {{SQL CARBON EDIT}} - end preview startup customization
// {{SQL CARBON EDIT}}
// {{SQL CARBON EDIT}} We still use legacy welcome page - not walkthrough
MenuRegistry.appendMenuItem(MenuId.MenubarHelpMenu, {

View File

@@ -1,140 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { URI } from 'vs/base/common/uri';
import { ICommandService } from 'vs/platform/commands/common/commands';
import * as arrays from 'vs/base/common/arrays';
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { onUnexpectedError } from 'vs/base/common/errors';
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IWorkingCopyBackupService } from 'vs/workbench/services/workingCopy/common/workingCopyBackup';
import { ILifecycleService, StartupKind } from 'vs/workbench/services/lifecycle/common/lifecycle';
import { IFileService } from 'vs/platform/files/common/files';
import { joinPath } from 'vs/base/common/resources';
import { IEditorOptions } from 'vs/platform/editor/common/editor';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
import { GettingStartedInput, gettingStartedInputTypeId } from 'vs/workbench/contrib/welcome/gettingStarted/browser/gettingStartedInput';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
import 'sql/workbench/contrib/welcome2/page/browser/az_data_welcome_page'; // {{SQL CARBON EDIT}}
const configurationKey = 'workbench.startupEditor';
const oldConfigurationKey = 'workbench.welcome.enabled';
const telemetryOptOutStorageKey = 'workbench.telemetryOptOutShown';
export class WelcomePageContribution implements IWorkbenchContribution {
constructor(
@IInstantiationService private readonly instantiationService: IInstantiationService,
@IConfigurationService private readonly configurationService: IConfigurationService,
@IEditorService private readonly editorService: IEditorService,
@IWorkingCopyBackupService private readonly workingCopyBackupService: IWorkingCopyBackupService,
@IFileService private readonly fileService: IFileService,
@IWorkspaceContextService private readonly contextService: IWorkspaceContextService,
@ILifecycleService private readonly lifecycleService: ILifecycleService,
@IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService,
@ICommandService private readonly commandService: ICommandService,
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
@IStorageService private readonly storageService: IStorageService
) {
this.run().then(undefined, onUnexpectedError);
}
private async run() {
// Always open Welcome page for first-launch, no matter what is open or which startupEditor is set.
if (this.configurationService.getValue('telemetry.enableTelemetry') && !this.storageService.get(telemetryOptOutStorageKey, StorageScope.GLOBAL)) {
this.storageService.store(telemetryOptOutStorageKey, true, StorageScope.GLOBAL, StorageTarget.USER);
await this.openWelcome(true);
return;
}
const enabled = isWelcomePageEnabled(this.configurationService, this.contextService, this.environmentService);
if (enabled && this.lifecycleService.startupKind !== StartupKind.ReloadedWindow) {
const hasBackups = await this.workingCopyBackupService.hasBackups();
if (hasBackups) { return; }
// Open the welcome even if we opened a set of default editors
if (!this.editorService.activeEditor || this.layoutService.openedDefaultEditors) {
const startupEditorSetting = this.configurationService.inspect<string>(configurationKey);
// 'readme' should not be set in workspace settings to prevent tracking,
// but it can be set as a default (as in codespaces) or a user setting
const openWithReadme = startupEditorSetting.value === 'readme' &&
(startupEditorSetting.userValue === 'readme' || startupEditorSetting.defaultValue === 'readme');
if (openWithReadme) {
await this.openReadme();
} else {
await this.openWelcome();
}
}
}
}
private async openReadme() {
const readmes = arrays.coalesce(
await Promise.all(this.contextService.getWorkspace().folders.map(
async folder => {
const folderUri = folder.uri;
const folderStat = await this.fileService.resolve(folderUri).catch(onUnexpectedError);
const files = folderStat?.children ? folderStat.children.map(child => child.name).sort() : [];
const file = files.find(file => file.toLowerCase() === 'readme.md') || files.find(file => file.toLowerCase().startsWith('readme'));
if (file) { return joinPath(folderUri, file); }
else { return undefined; }
})));
if (!this.editorService.activeEditor) {
if (readmes.length) {
const isMarkDown = (readme: URI) => readme.path.toLowerCase().endsWith('.md');
await Promise.all([
this.commandService.executeCommand('markdown.showPreview', null, readmes.filter(isMarkDown), { locked: true }),
this.editorService.openEditors(readmes.filter(readme => !isMarkDown(readme)).map(readme => ({ resource: readme }))),
]);
} else {
await this.openWelcome();
}
}
}
private async openWelcome(showTelemetryNotice?: boolean) {
const startupEditorTypeID = gettingStartedInputTypeId;
const editor = this.editorService.activeEditor;
// Ensure that the welcome editor won't get opened more than once
if (editor?.typeId === startupEditorTypeID || this.editorService.editors.some(e => e.typeId === startupEditorTypeID)) {
return;
}
const options: IEditorOptions = editor ? { pinned: false, index: 0 } : { pinned: false };
if (startupEditorTypeID === gettingStartedInputTypeId) {
this.editorService.openEditor(this.instantiationService.createInstance(GettingStartedInput, { showTelemetryNotice }), options);
}
}
}
function isWelcomePageEnabled(configurationService: IConfigurationService, contextService: IWorkspaceContextService, environmentService: IWorkbenchEnvironmentService) {
if (environmentService.skipWelcome) {
return false;
}
const startupEditor = configurationService.inspect<string>(configurationKey);
if (!startupEditor.userValue && !startupEditor.workspaceValue) {
const welcomeEnabled = configurationService.inspect(oldConfigurationKey);
if (welcomeEnabled.value !== undefined && welcomeEnabled.value !== null) {
return welcomeEnabled.value;
}
}
if (startupEditor.value === 'readme' && startupEditor.userValue !== 'readme' && startupEditor.defaultValue !== 'readme') {
console.error(`Warning: 'workbench.startupEditor: readme' setting ignored due to being set somewhere other than user or default settings (user=${startupEditor.userValue}, default=${startupEditor.defaultValue})`);
}
return startupEditor.value === 'welcomePage'
|| startupEditor.value === 'readme' && (startupEditor.userValue === 'readme' || startupEditor.defaultValue === 'readme')
|| (contextService.getWorkbenchState() === WorkbenchState.EMPTY && startupEditor.value === 'welcomePageInEmptyWorkbench');
}