Files
vscode-codeql/extensions/ql-vscode/src/variant-analysis/variant-analysis-content-provider.ts
2023-12-11 17:00:16 +01:00

37 lines
1.3 KiB
TypeScript

import { TextDocumentContentProvider, Uri } from "vscode";
import { URLSearchParams } from "url";
import { SHOW_QUERY_TEXT_MSG } from "../query-history/query-history-manager";
import { VariantAnalysisManager } from "./variant-analysis-manager";
import { showAndLogWarningMessage } from "../common/logging";
import { extLogger } from "../common/logging/vscode";
export const createVariantAnalysisContentProvider = (
variantAnalysisManager: VariantAnalysisManager,
): TextDocumentContentProvider => ({
async provideTextDocumentContent(uri: Uri): Promise<string | undefined> {
const params = new URLSearchParams(uri.query);
const variantAnalysisIdString = params.get("variantAnalysisId");
if (!variantAnalysisIdString) {
void showAndLogWarningMessage(
extLogger,
"Unable to show query text. No variant analysis ID provided.",
);
return undefined;
}
const variantAnalysisId = parseInt(variantAnalysisIdString);
const variantAnalysis =
await variantAnalysisManager.getVariantAnalysis(variantAnalysisId);
if (!variantAnalysis) {
void showAndLogWarningMessage(
extLogger,
"Unable to show query text. No variant analysis found.",
);
return undefined;
}
return SHOW_QUERY_TEXT_MSG + variantAnalysis.query.text;
},
});