Skip to content

Commit 4a62d05

Browse files
committed
Convert SetSelectedMethodMessage to include multiple modeled methods
1 parent e77cf28 commit 4a62d05

File tree

5 files changed

+26
-35
lines changed

5 files changed

+26
-35
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,11 @@ interface SetModeledMethodMessage {
577577
method: ModeledMethod;
578578
}
579579

580+
interface SetMultipleModeledMethodsMessage {
581+
t: "setMultipleModeledMethods";
582+
modeledMethods: ModeledMethod[];
583+
}
584+
580585
interface SetInModelingModeMessage {
581586
t: "setInModelingMode";
582587
inModelingMode: boolean;
@@ -643,14 +648,14 @@ interface SetMethodModifiedMessage {
643648
interface SetSelectedMethodMessage {
644649
t: "setSelectedMethod";
645650
method: Method;
646-
modeledMethod?: ModeledMethod;
651+
modeledMethods: ModeledMethod[];
647652
isModified: boolean;
648653
}
649654

650655
export type ToMethodModelingMessage =
651656
| SetMethodModelingPanelViewStateMessage
652657
| SetMethodMessage
653-
| SetModeledMethodMessage
658+
| SetMultipleModeledMethodsMessage
654659
| SetMethodModifiedMessage
655660
| SetSelectedMethodMessage
656661
| SetInModelingModeMessage;

extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ import { assertNever } from "../../common/helpers-pure";
1414
import { ModelEditorViewTracker } from "../model-editor-view-tracker";
1515
import { ModelConfigListener } from "../../config";
1616
import { DatabaseItem } from "../../databases/local-databases";
17-
import {
18-
convertFromLegacyModeledMethod,
19-
convertToLegacyModeledMethod,
20-
} from "../shared/modeled-methods-legacy";
17+
import { convertFromLegacyModeledMethod } from "../shared/modeled-methods-legacy";
2118

2219
export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
2320
ToMethodModelingMessage,
@@ -77,9 +74,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
7774
await this.postMessage({
7875
t: "setSelectedMethod",
7976
method: selectedMethod.method,
80-
modeledMethod: convertToLegacyModeledMethod(
81-
selectedMethod.modeledMethods,
82-
),
77+
modeledMethods: selectedMethod.modeledMethods,
8378
isModified: selectedMethod.isModified,
8479
});
8580
}
@@ -165,13 +160,10 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
165160
if (this.webviewView && e.isActiveDb) {
166161
const modeledMethods = e.modeledMethods[this.method?.signature ?? ""];
167162
if (modeledMethods) {
168-
const modeledMethod = convertToLegacyModeledMethod(modeledMethods);
169-
if (modeledMethod) {
170-
await this.postMessage({
171-
t: "setModeledMethod",
172-
method: modeledMethod,
173-
});
174-
}
163+
await this.postMessage({
164+
t: "setMultipleModeledMethods",
165+
modeledMethods,
166+
});
175167
}
176168
}
177169
}),
@@ -198,7 +190,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
198190
await this.postMessage({
199191
t: "setSelectedMethod",
200192
method: e.method,
201-
modeledMethod: convertToLegacyModeledMethod(e.modeledMethods),
193+
modeledMethods: e.modeledMethods,
202194
isModified: e.isModified,
203195
});
204196
}

extensions/ql-vscode/src/model-editor/method.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ export function getArgumentsList(methodParameters: string): string[] {
6868

6969
export function canMethodBeModeled(
7070
method: Method,
71-
modeledMethod: ModeledMethod | undefined,
71+
modeledMethods: ModeledMethod[],
7272
methodIsUnsaved: boolean,
7373
): boolean {
7474
return (
7575
!method.supported ||
76-
(modeledMethod && modeledMethod?.type !== "none") ||
76+
modeledMethods.some((modeledMethod) => modeledMethod.type !== "none") ||
7777
methodIsUnsaved
7878
);
7979
}

extensions/ql-vscode/src/view/method-modeling/MethodModelingView.tsx

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { vscode } from "../vscode-api";
1010
import { NotInModelingMode } from "./NotInModelingMode";
1111
import { NoMethodSelected } from "./NoMethodSelected";
1212
import { MethodModelingPanelViewState } from "../../model-editor/shared/view-state";
13-
import { convertFromLegacyModeledMethod } from "../../model-editor/shared/modeled-methods-legacy";
1413
import { MethodAlreadyModeled } from "./MethodAlreadyModeled";
1514

1615
type Props = {
@@ -25,19 +24,13 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
2524

2625
const [method, setMethod] = useState<Method | undefined>(undefined);
2726

28-
const [modeledMethod, setModeledMethod] = React.useState<
29-
ModeledMethod | undefined
30-
>(undefined);
27+
const [modeledMethods, setModeledMethods] = useState<ModeledMethod[]>([]);
3128

3229
const [isMethodModified, setIsMethodModified] = useState<boolean>(false);
3330

3431
const modelingStatus = useMemo(
35-
() =>
36-
getModelingStatus(
37-
convertFromLegacyModeledMethod(modeledMethod),
38-
isMethodModified,
39-
),
40-
[modeledMethod, isMethodModified],
32+
() => getModelingStatus(modeledMethods, isMethodModified),
33+
[modeledMethods, isMethodModified],
4134
);
4235

4336
useEffect(() => {
@@ -54,15 +47,15 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
5447
case "setMethod":
5548
setMethod(msg.method);
5649
break;
57-
case "setModeledMethod":
58-
setModeledMethod(msg.method);
50+
case "setMultipleModeledMethods":
51+
setModeledMethods(msg.modeledMethods);
5952
break;
6053
case "setMethodModified":
6154
setIsMethodModified(msg.isModified);
6255
break;
6356
case "setSelectedMethod":
6457
setMethod(msg.method);
65-
setModeledMethod(msg.modeledMethod);
58+
setModeledMethods(msg.modeledMethods);
6659
setIsMethodModified(msg.isModified);
6760
break;
6861
default:
@@ -89,7 +82,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
8982
return <NoMethodSelected />;
9083
}
9184

92-
if (!canMethodBeModeled(method, modeledMethod, isMethodModified)) {
85+
if (!canMethodBeModeled(method, modeledMethods, isMethodModified)) {
9386
return <MethodAlreadyModeled />;
9487
}
9588

@@ -104,7 +97,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
10497
<MethodModeling
10598
modelingStatus={modelingStatus}
10699
method={method}
107-
modeledMethods={convertFromLegacyModeledMethod(modeledMethod)}
100+
modeledMethods={modeledMethods}
108101
showMultipleModels={viewState?.showMultipleModels}
109102
onChange={onChange}
110103
/>

extensions/ql-vscode/src/view/model-editor/ModeledMethodDataGrid.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { sortMethods } from "../../model-editor/shared/sorting";
1212
import { InProgressMethods } from "../../model-editor/shared/in-progress-methods";
1313
import { HiddenMethodsRow } from "./HiddenMethodsRow";
1414
import { ModelEditorViewState } from "../../model-editor/shared/view-state";
15+
import { convertFromLegacyModeledMethod } from "../../model-editor/shared/modeled-methods-legacy";
1516

1617
export const GRID_TEMPLATE_COLUMNS = "0.5fr 0.125fr 0.125fr 0.125fr 0.125fr";
1718

@@ -49,7 +50,7 @@ export const ModeledMethodDataGrid = ({
4950
const methodIsUnsaved = modifiedSignatures.has(method.signature);
5051
const methodCanBeModeled = canMethodBeModeled(
5152
method,
52-
modeledMethod,
53+
convertFromLegacyModeledMethod(modeledMethod),
5354
methodIsUnsaved,
5455
);
5556

0 commit comments

Comments
 (0)