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 { asError, assertNever, getErrorMessage } from "../pure/helpers-pure";
import { decodeBqrsToExternalApiUsages } from "./bqrs"; import { decodeBqrsToExternalApiUsages } from "./bqrs";
import { redactableError } from "../pure/errors"; 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< export class DataExtensionsEditorView extends AbstractWebview<
ToDataExtensionsEditorMessage, ToDataExtensionsEditorMessage,
@@ -72,8 +74,11 @@ export class DataExtensionsEditorView extends AbstractWebview<
await this.onWebViewLoaded(); await this.onWebViewLoaded();
break; break;
case "applyDataExtensionYaml": case "saveModeledMethods":
await this.saveYaml(msg.yaml); await this.saveModeledMethods(
msg.externalApiUsages,
msg.modeledMethods,
);
await this.loadExternalApiUsages(); await this.loadExternalApiUsages();
break; 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(); const modelFilename = this.calculateModelFilename();
if (!modelFilename) { if (!modelFilename) {
return; return;
} }
const yaml = createDataExtensionYaml(externalApiUsages, modeledMethods);
await writeFile(modelFilename, yaml); await writeFile(modelFilename, yaml);
void extLogger.log(`Saved data extension YAML to ${modelFilename}`); void extLogger.log(`Saved data extension YAML to ${modelFilename}`);

View File

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

View File

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