Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Show decompilation authorization once per install. #4760

Merged
merged 2 commits into from
Sep 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/features/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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()) {
Expand Down
22 changes: 14 additions & 8 deletions src/omnisharp/decompilationPrompt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<boolean | undefined>("decompilationAuthorized");
if (decompilationAutorized !== undefined) {
return decompilationAutorized;
// If the terms have been acknowledged, then return whether it was authorized.
let decompilationAuthorized = context.globalState.get<boolean | undefined>(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 {
Expand Down