Implement saving only one model at a time
This commit is contained in:
@@ -88,7 +88,6 @@ export function DataExtensionsEditor({
|
|||||||
break;
|
break;
|
||||||
case "setExternalApiUsages":
|
case "setExternalApiUsages":
|
||||||
setExternalApiUsages(msg.externalApiUsages);
|
setExternalApiUsages(msg.externalApiUsages);
|
||||||
setUnsavedModels(new Set());
|
|
||||||
break;
|
break;
|
||||||
case "showProgress":
|
case "showProgress":
|
||||||
setProgress(msg);
|
setProgress(msg);
|
||||||
@@ -151,14 +150,35 @@ export function DataExtensionsEditor({
|
|||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const onApplyClick = useCallback(() => {
|
const onSaveAllClick = useCallback(() => {
|
||||||
vscode.postMessage({
|
vscode.postMessage({
|
||||||
t: "saveModeledMethods",
|
t: "saveModeledMethods",
|
||||||
externalApiUsages,
|
externalApiUsages,
|
||||||
modeledMethods,
|
modeledMethods,
|
||||||
});
|
});
|
||||||
|
setUnsavedModels(new Set());
|
||||||
}, [externalApiUsages, modeledMethods]);
|
}, [externalApiUsages, modeledMethods]);
|
||||||
|
|
||||||
|
const onSaveModelClick = useCallback(
|
||||||
|
(
|
||||||
|
modelName: string,
|
||||||
|
externalApiUsages: ExternalApiUsage[],
|
||||||
|
modeledMethods: Record<string, ModeledMethod>,
|
||||||
|
) => {
|
||||||
|
vscode.postMessage({
|
||||||
|
t: "saveModeledMethods",
|
||||||
|
externalApiUsages,
|
||||||
|
modeledMethods,
|
||||||
|
});
|
||||||
|
setUnsavedModels((oldUnsavedModels) => {
|
||||||
|
const newUnsavedModels = new Set(oldUnsavedModels);
|
||||||
|
newUnsavedModels.delete(modelName);
|
||||||
|
return newUnsavedModels;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
const onGenerateClick = useCallback(() => {
|
const onGenerateClick = useCallback(() => {
|
||||||
vscode.postMessage({
|
vscode.postMessage({
|
||||||
t: "generateExternalApi",
|
t: "generateExternalApi",
|
||||||
@@ -239,7 +259,7 @@ export function DataExtensionsEditor({
|
|||||||
|
|
||||||
<EditorContainer>
|
<EditorContainer>
|
||||||
<ButtonsContainer>
|
<ButtonsContainer>
|
||||||
<VSCodeButton onClick={onApplyClick}>Apply</VSCodeButton>
|
<VSCodeButton onClick={onSaveAllClick}>Apply</VSCodeButton>
|
||||||
{viewState?.enableFrameworkMode && (
|
{viewState?.enableFrameworkMode && (
|
||||||
<VSCodeButton appearance="secondary" onClick={onRefreshClick}>
|
<VSCodeButton appearance="secondary" onClick={onRefreshClick}>
|
||||||
Refresh
|
Refresh
|
||||||
@@ -264,6 +284,7 @@ export function DataExtensionsEditor({
|
|||||||
modeledMethods={modeledMethods}
|
modeledMethods={modeledMethods}
|
||||||
mode={viewState?.mode ?? Mode.Application}
|
mode={viewState?.mode ?? Mode.Application}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
|
onSaveModelClick={onSaveModelClick}
|
||||||
/>
|
/>
|
||||||
</EditorContainer>
|
</EditorContainer>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -87,6 +87,11 @@ type Props = {
|
|||||||
externalApiUsage: ExternalApiUsage,
|
externalApiUsage: ExternalApiUsage,
|
||||||
modeledMethod: ModeledMethod,
|
modeledMethod: ModeledMethod,
|
||||||
) => void;
|
) => void;
|
||||||
|
onSaveModelClick: (
|
||||||
|
modelName: string,
|
||||||
|
externalApiUsages: ExternalApiUsage[],
|
||||||
|
modeledMethods: Record<string, ModeledMethod>,
|
||||||
|
) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const LibraryRow = ({
|
export const LibraryRow = ({
|
||||||
@@ -96,6 +101,7 @@ export const LibraryRow = ({
|
|||||||
mode,
|
mode,
|
||||||
hasUnsavedChanges,
|
hasUnsavedChanges,
|
||||||
onChange,
|
onChange,
|
||||||
|
onSaveModelClick,
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
const modeledPercentage = useMemo(() => {
|
const modeledPercentage = useMemo(() => {
|
||||||
return calculateModeledPercentage(externalApiUsages);
|
return calculateModeledPercentage(externalApiUsages);
|
||||||
@@ -117,10 +123,14 @@ export const LibraryRow = ({
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleSave = useCallback(async (e: React.MouseEvent) => {
|
const handleSave = useCallback(
|
||||||
e.stopPropagation();
|
async (e: React.MouseEvent) => {
|
||||||
e.preventDefault();
|
onSaveModelClick(title, externalApiUsages, modeledMethods);
|
||||||
}, []);
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
},
|
||||||
|
[title, externalApiUsages, modeledMethods, onSaveModelClick],
|
||||||
|
);
|
||||||
|
|
||||||
const onChangeWithModelName = useCallback(
|
const onChangeWithModelName = useCallback(
|
||||||
(externalApiUsage: ExternalApiUsage, modeledMethod: ModeledMethod) => {
|
(externalApiUsage: ExternalApiUsage, modeledMethod: ModeledMethod) => {
|
||||||
|
|||||||
@@ -19,6 +19,11 @@ type Props = {
|
|||||||
externalApiUsage: ExternalApiUsage,
|
externalApiUsage: ExternalApiUsage,
|
||||||
modeledMethod: ModeledMethod,
|
modeledMethod: ModeledMethod,
|
||||||
) => void;
|
) => void;
|
||||||
|
onSaveModelClick: (
|
||||||
|
modelName: string,
|
||||||
|
externalApiUsages: ExternalApiUsage[],
|
||||||
|
modeledMethods: Record<string, ModeledMethod>,
|
||||||
|
) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ModeledMethodsList = ({
|
export const ModeledMethodsList = ({
|
||||||
@@ -27,6 +32,7 @@ export const ModeledMethodsList = ({
|
|||||||
modeledMethods,
|
modeledMethods,
|
||||||
mode,
|
mode,
|
||||||
onChange,
|
onChange,
|
||||||
|
onSaveModelClick,
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
const grouped = useMemo(
|
const grouped = useMemo(
|
||||||
() => groupMethods(externalApiUsages, mode),
|
() => groupMethods(externalApiUsages, mode),
|
||||||
@@ -46,6 +52,7 @@ export const ModeledMethodsList = ({
|
|||||||
modeledMethods={modeledMethods}
|
modeledMethods={modeledMethods}
|
||||||
mode={mode}
|
mode={mode}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
|
onSaveModelClick={onSaveModelClick}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</>
|
</>
|
||||||
|
|||||||
Reference in New Issue
Block a user