diff --git a/src/features/commands.ts b/src/features/commands.ts index 8775eb8566..67c1474daa 100644 --- a/src/features/commands.ts +++ b/src/features/commands.ts @@ -21,7 +21,7 @@ import OptionProvider from '../observers/OptionProvider'; import reportIssue from './reportIssue'; import { IMonoResolver } from '../constants/IMonoResolver'; import { getDotnetInfo } from '../utils/getDotnetInfo'; -import { getDecompilationAuthorization } from '../omnisharp/decompilationPrompt'; +import { getDecompilationAuthorization, resetDecompilationAuthorization } from '../omnisharp/decompilationPrompt'; export default function registerCommands(context: vscode.ExtensionContext, server: OmniSharpServer, platformInfo: PlatformInformation, eventStream: EventStream, optionProvider: OptionProvider, monoResolver: IMonoResolver, packageJSON: any, extensionPath: string): CompositeDisposable { let disposable = new CompositeDisposable(); @@ -62,13 +62,13 @@ export default function registerCommands(context: vscode.ExtensionContext, serve async function showDecompilationTerms(context: vscode.ExtensionContext, server: OmniSharpServer, optionProvider: OptionProvider) { // Reset the decompilation authorization so the user will be prompted on restart. - context.workspaceState.update("decompilationAuthorized", undefined); + resetDecompilationAuthorization(context); await restartOmniSharp(context, server, optionProvider); } async function restartOmniSharp(context: vscode.ExtensionContext, server: OmniSharpServer, optionProvider: OptionProvider) { - // Update decompilation authorization for this workspace. + // Update decompilation authorization. server.decompilationAuthorized = await getDecompilationAuthorization(context, optionProvider); if (server.isRunning()) { diff --git a/src/omnisharp/decompilationPrompt.ts b/src/omnisharp/decompilationPrompt.ts index 3849c0412b..e0fb09add9 100644 --- a/src/omnisharp/decompilationPrompt.ts +++ b/src/omnisharp/decompilationPrompt.ts @@ -6,25 +6,31 @@ import * as vscode from "vscode"; import OptionProvider from "../observers/OptionProvider"; +const DecompilationAuthorizedOption = "csharp.decompilationAuthorized"; + +export async function resetDecompilationAuthorization(context: vscode.ExtensionContext) { + context.globalState.update(DecompilationAuthorizedOption, undefined); +} + export async function getDecompilationAuthorization(context: vscode.ExtensionContext, optionProvider: OptionProvider) { - // If decompilation is disabled the return false + // If decompilation is disabled, then return false const options = optionProvider.GetLatestOptions(); if (options.enableDecompilationSupport === false) { return false; } - // If the terms have been acknowledged for this workspace then return. - let decompilationAutorized = context.workspaceState.get("decompilationAuthorized"); - if (decompilationAutorized !== undefined) { - return decompilationAutorized; + // If the terms have been acknowledged, then return whether it was authorized. + let decompilationAuthorized = context.globalState.get(DecompilationAuthorizedOption); + if (decompilationAuthorized !== undefined) { + return decompilationAuthorized; } const result = await promptToAcceptDecompilationTerms(); - decompilationAutorized = result === PromptResult.Yes; + decompilationAuthorized = result === PromptResult.Yes; - await context.workspaceState.update("decompilationAuthorized", decompilationAutorized); + await context.globalState.update(DecompilationAuthorizedOption, decompilationAuthorized); - return decompilationAutorized; + return decompilationAuthorized; } enum PromptResult {