Move creation of YAML string from webview to extension

This commit is contained in:
Koen Vlaswinkel
2023-04-06 10:52:46 +02:00
parent 82f96178bf
commit c0818d86d9
3 changed files with 21 additions and 15 deletions

View File

@@ -27,7 +27,9 @@ 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";
import { createDataExtensionYaml, loadDataExtensionYaml } from "./yaml";
import { ExternalApiUsage } from "./external-api-usage";
import { ModeledMethod } from "./modeled-method";
export class DataExtensionsEditorView extends AbstractWebview<
ToDataExtensionsEditorMessage,
@@ -72,8 +74,11 @@ export class DataExtensionsEditorView extends AbstractWebview<
await this.onWebViewLoaded();
break;
case "applyDataExtensionYaml":
await this.saveYaml(msg.yaml);
case "saveModeledMethods":
await this.saveModeledMethods(
msg.externalApiUsages,
msg.modeledMethods,
);
await this.loadExternalApiUsages();
break;
@@ -91,12 +96,17 @@ export class DataExtensionsEditorView extends AbstractWebview<
]);
}
protected async saveYaml(yaml: string): Promise<void> {
protected async saveModeledMethods(
externalApiUsages: ExternalApiUsage[],
modeledMethods: Record<string, ModeledMethod>,
): Promise<void> {
const modelFilename = this.calculateModelFilename();
if (!modelFilename) {
return;
}
const yaml = createDataExtensionYaml(externalApiUsages, modeledMethods);
await writeFile(modelFilename, yaml);
void extLogger.log(`Saved data extension YAML to ${modelFilename}`);

View File

@@ -498,9 +498,10 @@ export interface SetExistingModeledMethods {
existingModeledMethods: Record<string, ModeledMethod>;
}
export interface ApplyDataExtensionYamlMessage {
t: "applyDataExtensionYaml";
yaml: string;
export interface SaveModeledMethods {
t: "saveModeledMethods";
externalApiUsages: ExternalApiUsage[];
modeledMethods: Record<string, ModeledMethod>;
}
export type ToDataExtensionsEditorMessage =
@@ -510,4 +511,4 @@ export type ToDataExtensionsEditorMessage =
export type FromDataExtensionsEditorMessage =
| ViewLoadedMsg
| ApplyDataExtensionYamlMessage;
| SaveModeledMethods;

View File

@@ -16,7 +16,6 @@ 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 } from "../../data-extensions-editor/yaml";
import { calculateSupportedPercentage } from "./supported";
export const DataExtensionsEditorContainer = styled.div`
@@ -101,14 +100,10 @@ export function DataExtensionsEditor(): JSX.Element {
);
const onApplyClick = useCallback(() => {
const yamlString = createDataExtensionYaml(
vscode.postMessage({
t: "saveModeledMethods",
externalApiUsages,
modeledMethods,
);
vscode.postMessage({
t: "applyDataExtensionYaml",
yaml: yamlString,
});
}, [externalApiUsages, modeledMethods]);