Split addModeledMethods into that and loadModeledMethods
This commit is contained in:
@@ -509,21 +509,14 @@ export interface ShowProgressMessage {
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface LoadModeledMethodsMessage {
|
||||
t: "loadModeledMethods";
|
||||
modeledMethods: Record<string, ModeledMethod>;
|
||||
}
|
||||
|
||||
export interface AddModeledMethodsMessage {
|
||||
t: "addModeledMethods";
|
||||
modeledMethods: Record<string, ModeledMethod>;
|
||||
/**
|
||||
* Are these modeled methods newly generated in some way and not yet
|
||||
* saved in any model file, or are they loaded from an existing model file.
|
||||
*/
|
||||
unsaved: boolean;
|
||||
/**
|
||||
* If true, then any existing modeled methods set to "none" will be
|
||||
* overwritten by the new modeled methods. Otherwise, the "none" modeled
|
||||
* methods will not be overwritten, even if the new modeled methods
|
||||
* contain a better model.
|
||||
*/
|
||||
overrideNone?: boolean;
|
||||
}
|
||||
|
||||
export interface SwitchModeMessage {
|
||||
@@ -564,6 +557,7 @@ export type ToDataExtensionsEditorMessage =
|
||||
| SetExtensionPackStateMessage
|
||||
| SetExternalApiUsagesMessage
|
||||
| ShowProgressMessage
|
||||
| LoadModeledMethodsMessage
|
||||
| AddModeledMethodsMessage;
|
||||
|
||||
export type FromDataExtensionsEditorMessage =
|
||||
|
||||
@@ -257,9 +257,8 @@ export class DataExtensionsEditorView extends AbstractWebview<
|
||||
}
|
||||
|
||||
await this.postMessage({
|
||||
t: "addModeledMethods",
|
||||
t: "loadModeledMethods",
|
||||
modeledMethods: existingModeledMethods,
|
||||
unsaved: false,
|
||||
});
|
||||
} catch (e: unknown) {
|
||||
void showAndLogErrorMessage(
|
||||
@@ -388,8 +387,6 @@ export class DataExtensionsEditorView extends AbstractWebview<
|
||||
await this.postMessage({
|
||||
t: "addModeledMethods",
|
||||
modeledMethods: modeledMethodsByName,
|
||||
unsaved: true,
|
||||
overrideNone: true,
|
||||
});
|
||||
},
|
||||
progress: (update) => this.showProgress(update),
|
||||
@@ -483,8 +480,6 @@ export class DataExtensionsEditorView extends AbstractWebview<
|
||||
await this.postMessage({
|
||||
t: "addModeledMethods",
|
||||
modeledMethods: predictedModeledMethods,
|
||||
unsaved: true,
|
||||
overrideNone: true,
|
||||
});
|
||||
|
||||
await this.clearProgress();
|
||||
|
||||
@@ -93,38 +93,36 @@ export function DataExtensionsEditor({
|
||||
case "showProgress":
|
||||
setProgress(msg);
|
||||
break;
|
||||
case "addModeledMethods":
|
||||
case "loadModeledMethods":
|
||||
setModeledMethods((oldModeledMethods) => {
|
||||
const filteredOldModeledMethods = msg.overrideNone
|
||||
? Object.fromEntries(
|
||||
Object.entries(oldModeledMethods).filter(
|
||||
([, value]) => value.type !== "none",
|
||||
),
|
||||
)
|
||||
: oldModeledMethods;
|
||||
|
||||
return {
|
||||
...msg.modeledMethods,
|
||||
...filteredOldModeledMethods,
|
||||
...oldModeledMethods,
|
||||
};
|
||||
});
|
||||
if (msg.unsaved) {
|
||||
const affectedExternalApiUsages =
|
||||
externalApiUsagesForModeledMethods(
|
||||
msg.modeledMethods,
|
||||
externalApiUsages,
|
||||
);
|
||||
const affectedModelNames = Object.keys(
|
||||
groupMethods(
|
||||
affectedExternalApiUsages,
|
||||
viewState?.mode ?? Mode.Application,
|
||||
break;
|
||||
case "addModeledMethods":
|
||||
setModeledMethods((oldModeledMethods) => {
|
||||
return {
|
||||
...msg.modeledMethods,
|
||||
...Object.fromEntries(
|
||||
Object.entries(oldModeledMethods).filter(
|
||||
([, value]) => value.type !== "none",
|
||||
),
|
||||
),
|
||||
);
|
||||
setUnsavedModels(
|
||||
(oldUnsavedModels) =>
|
||||
new Set([...oldUnsavedModels, ...affectedModelNames]),
|
||||
);
|
||||
}
|
||||
};
|
||||
});
|
||||
setUnsavedModels(
|
||||
(oldUnsavedModels) =>
|
||||
new Set([
|
||||
...oldUnsavedModels,
|
||||
...modelsAffectedByNewModeledMethods(
|
||||
msg.modeledMethods,
|
||||
externalApiUsages,
|
||||
viewState?.mode ?? Mode.Application,
|
||||
),
|
||||
]),
|
||||
);
|
||||
break;
|
||||
default:
|
||||
assertNever(msg);
|
||||
@@ -328,12 +326,14 @@ export function DataExtensionsEditor({
|
||||
);
|
||||
}
|
||||
|
||||
function externalApiUsagesForModeledMethods(
|
||||
function modelsAffectedByNewModeledMethods(
|
||||
modeledMethods: Record<string, ModeledMethod>,
|
||||
externalApiUsages: ExternalApiUsage[],
|
||||
): ExternalApiUsage[] {
|
||||
mode: Mode,
|
||||
): string[] {
|
||||
const signatures = new Set(Object.keys(modeledMethods));
|
||||
return externalApiUsages.filter((externalApiUsage) =>
|
||||
signatures.has(externalApiUsage.signature),
|
||||
const affectedExternalApiUsages = externalApiUsages.filter(
|
||||
(externalApiUsage) => signatures.has(externalApiUsage.signature),
|
||||
);
|
||||
return Object.keys(groupMethods(affectedExternalApiUsages, mode));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user