.then(selected => { if (!selected) { return { oldVersion: this.currentVersion }; } switch (selected.id) { case MessageAction.useLocal: return this.workspaceState.update(useWorkspaceTsdkStorageKey, true) .then(_ => { if (localVersion) { const previousVersion = this.currentVersion; this._currentVersion = localVersion; return { oldVersion: previousVersion, newVersion: localVersion }; } return { oldVersion: this.currentVersion }; }); case MessageAction.useBundled: return this.workspaceState.update(useWorkspaceTsdkStorageKey, false) .then(_ => { const previousVersion = this.currentVersion; this._currentVersion = shippedVersion; return { oldVersion: previousVersion, newVersion: shippedVersion }; }); case MessageAction.learnMore: commands.executeCommand('vscode.open', Uri.parse('https://go.microsoft.com/fwlink/?linkid=839919')); return { oldVersion: this.currentVersion }; default: return { oldVersion: this.currentVersion }; } });
public constructor( private readonly versionProvider: TypeScriptVersionProvider, private readonly workspaceState: Memento ) { this._currentVersion = this.versionProvider.defaultVersion; if (workspaceState.get<boolean>(useWorkspaceTsdkStorageKey, false)) { const localVersion = this.versionProvider.localTsdkVersion; if (localVersion) { this._currentVersion = localVersion; } } }
public async show(firstRun?: boolean): Promise<{ oldVersion?: TypeScriptVersion, newVersion?: TypeScriptVersion }> { const pickOptions: MyQuickPickItem[] = []; const shippedVersion = this.versionProvider.defaultVersion; pickOptions.push({ label: (this.currentVersion.path === shippedVersion.path ? '• ' : '') + localize('useVSCodeVersionOption', 'Use VSCode\'s Version'), description: shippedVersion.version.versionString, detail: shippedVersion.label, id: MessageAction.useBundled }); for (const version of this.versionProvider.localVersions) { pickOptions.push({ label: (this.currentVersion.path === version.path ? '• ' : '') + localize('useWorkspaceVersionOption', 'Use Workspace Version'), description: version.version.versionString, detail: version.label, id: MessageAction.useLocal, version: version }); } pickOptions.push({ label: localize('learnMore', 'Learn More'), description: '', id: MessageAction.learnMore }); const selected = await window.showQuickPick<MyQuickPickItem>(pickOptions, { placeHolder: localize( 'selectTsVersion', 'Select the TypeScript version used for JavaScript and TypeScript language features'), ignoreFocusOut: firstRun }); if (!selected) { return { oldVersion: this.currentVersion }; } switch (selected.id) { case MessageAction.useLocal: await this.workspaceState.update(useWorkspaceTsdkStorageKey, true); if (selected.version) { const tsConfig = workspace.getConfiguration('typescript'); await tsConfig.update('tsdk', selected.version.label, false); const previousVersion = this.currentVersion; this._currentVersion = selected.version; return { oldVersion: previousVersion, newVersion: selected.version }; } return { oldVersion: this.currentVersion }; case MessageAction.useBundled: await this.workspaceState.update(useWorkspaceTsdkStorageKey, false); const previousVersion = this.currentVersion; this._currentVersion = shippedVersion; return { oldVersion: previousVersion, newVersion: shippedVersion }; case MessageAction.learnMore: commands.executeCommand('vscode.open', Uri.parse('https://go.microsoft.com/fwlink/?linkid=839919')); return { oldVersion: this.currentVersion }; default: return { oldVersion: this.currentVersion }; } }
public show(firstRun?: boolean): Thenable<{ oldVersion?: TypeScriptVersion, newVersion?: TypeScriptVersion }> { const useWorkspaceVersionSetting = this.workspaceState.get<boolean>(useWorkspaceTsdkStorageKey, false); const shippedVersion = this.versionProvider.defaultVersion; const localVersion = this.versionProvider.localVersion; const pickOptions: MyQuickPickItem[] = []; pickOptions.push({ label: localize('useVSCodeVersionOption', 'Use VSCode\'s Version'), description: shippedVersion.version.versionString, detail: this.currentVersion.path === shippedVersion.path && (this.currentVersion.path !== (localVersion && localVersion.path) || !useWorkspaceVersionSetting) ? localize('activeVersion', 'Currently active') : '', id: MessageAction.useBundled }); if (localVersion) { pickOptions.push({ label: localize('useWorkspaceVersionOption', 'Use Workspace Version'), description: localVersion.version.versionString, detail: this.currentVersion.path === localVersion.path && (this.currentVersion.path !== shippedVersion.path || useWorkspaceVersionSetting) ? localize('activeVersion', 'Currently active') : '', id: MessageAction.useLocal }); } pickOptions.push({ label: localize('learnMore', 'Learn More'), description: '', id: MessageAction.learnMore }); return window.showQuickPick<MyQuickPickItem>(pickOptions, { placeHolder: localize( 'selectTsVersion', 'Select the TypeScript version used for JavaScript and TypeScript language features'), ignoreFocusOut: firstRun }) .then(selected => { if (!selected) { return { oldVersion: this.currentVersion }; } switch (selected.id) { case MessageAction.useLocal: return this.workspaceState.update(useWorkspaceTsdkStorageKey, true) .then(_ => { if (localVersion) { const previousVersion = this.currentVersion; this._currentVersion = localVersion; return { oldVersion: previousVersion, newVersion: localVersion }; } return { oldVersion: this.currentVersion }; }); case MessageAction.useBundled: return this.workspaceState.update(useWorkspaceTsdkStorageKey, false) .then(_ => { const previousVersion = this.currentVersion; this._currentVersion = shippedVersion; return { oldVersion: previousVersion, newVersion: shippedVersion }; }); case MessageAction.learnMore: commands.executeCommand('vscode.open', Uri.parse('https://go.microsoft.com/fwlink/?linkid=839919')); return { oldVersion: this.currentVersion }; default: return { oldVersion: this.currentVersion }; } }); }
public get useWorkspaceTsdkSetting(): boolean { return this.workspaceState.get<boolean>(useWorkspaceTsdkStorageKey, false); }