Move loading of YAML from webview to extension

This commit is contained in:
Koen Vlaswinkel
2023-04-06 10:49:01 +02:00
parent df2e22bad2
commit 82f96178bf
3 changed files with 19 additions and 14 deletions

View File

@@ -20,12 +20,14 @@ import { dump as dumpYaml, load as loadYaml } from "js-yaml";
import {
getOnDiskWorkspaceFolders,
showAndLogExceptionWithTelemetry,
showAndLogWarningMessage,
} from "../helpers";
import { DatabaseItem } from "../local-databases";
import { CodeQLCliServer } from "../cli";
import { asError, assertNever, getErrorMessage } from "../pure/helpers-pure";
import { decodeBqrsToExternalApiUsages } from "./bqrs";
import { redactableError } from "../pure/errors";
import { loadDataExtensionYaml } from "./yaml";
export class DataExtensionsEditorView extends AbstractWebview<
ToDataExtensionsEditorMessage,
@@ -113,9 +115,16 @@ export class DataExtensionsEditorView extends AbstractWebview<
filename: modelFilename,
});
const existingModeledMethods = loadDataExtensionYaml(data);
if (!existingModeledMethods) {
void showAndLogWarningMessage("Failed to parse data extension YAML.");
return;
}
await this.postMessage({
t: "setExistingYamlData",
data,
t: "setExistingModeledMethods",
existingModeledMethods,
});
} catch (e: unknown) {
void extLogger.log(`Unable to read data extension YAML: ${e}`);

View File

@@ -15,6 +15,7 @@ import { RepositoriesFilterSortStateWithIds } from "./variant-analysis-filter-so
import { ErrorLike } from "./errors";
import { DataFlowPaths } from "../variant-analysis/shared/data-flow-paths";
import { ExternalApiUsage } from "../data-extensions-editor/external-api-usage";
import { ModeledMethod } from "../data-extensions-editor/modeled-method";
/**
* This module contains types and code that are shared between
@@ -492,9 +493,9 @@ export interface ShowProgressMessage {
message: string;
}
export interface SetExistingYamlDataMessage {
t: "setExistingYamlData";
data: any;
export interface SetExistingModeledMethods {
t: "setExistingModeledMethods";
existingModeledMethods: Record<string, ModeledMethod>;
}
export interface ApplyDataExtensionYamlMessage {
@@ -505,7 +506,7 @@ export interface ApplyDataExtensionYamlMessage {
export type ToDataExtensionsEditorMessage =
| SetExternalApiUsagesMessage
| ShowProgressMessage
| SetExistingYamlDataMessage;
| SetExistingModeledMethods;
export type FromDataExtensionsEditorMessage =
| ViewLoadedMsg

View File

@@ -16,10 +16,7 @@ import { ModeledMethod } from "../../data-extensions-editor/modeled-method";
import { MethodRow } from "./MethodRow";
import { assertNever } from "../../pure/helpers-pure";
import { vscode } from "../vscode-api";
import {
createDataExtensionYaml,
loadDataExtensionYaml,
} from "../../data-extensions-editor/yaml";
import { createDataExtensionYaml } from "../../data-extensions-editor/yaml";
import { calculateSupportedPercentage } from "./supported";
export const DataExtensionsEditorContainer = styled.div`
@@ -61,12 +58,10 @@ export function DataExtensionsEditor(): JSX.Element {
case "showProgress":
setProgress(msg);
break;
case "setExistingYamlData":
case "setExistingModeledMethods":
setModeledMethods((oldModeledMethods) => {
const existingModeledMethods = loadDataExtensionYaml(msg.data);
return {
...existingModeledMethods,
...msg.existingModeledMethods,
...oldModeledMethods,
};
});