Skip to content

Commit 3a03570

Browse files
authored
Merge pull request #2947 from github/koesie10/update-set-selected-method-message
Convert `SetSelectedMethodMessage` to include multiple modeled methods
2 parents c459d0f + 84211c6 commit 3a03570

File tree

3 files changed

+26
-40
lines changed

3 files changed

+26
-40
lines changed

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

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

580+
interface SetMultipleModeledMethodsMessage {
581+
t: "setMultipleModeledMethods";
582+
methodSignature: string;
583+
modeledMethods: ModeledMethod[];
584+
}
585+
580586
interface SetInModelingModeMessage {
581587
t: "setInModelingMode";
582588
inModelingMode: boolean;
@@ -643,14 +649,14 @@ interface SetMethodModifiedMessage {
643649
interface SetSelectedMethodMessage {
644650
t: "setSelectedMethod";
645651
method: Method;
646-
modeledMethod?: ModeledMethod;
652+
modeledMethods: ModeledMethod[];
647653
isModified: boolean;
648654
}
649655

650656
export type ToMethodModelingMessage =
651657
| SetMethodModelingPanelViewStateMessage
652658
| SetMethodMessage
653-
| SetModeledMethodMessage
659+
| SetMultipleModeledMethodsMessage
654660
| SetMethodModifiedMessage
655661
| SetSelectedMethodMessage
656662
| SetInModelingModeMessage;

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

Lines changed: 10 additions & 17 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
}
@@ -162,16 +157,14 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
162157
private registerToModelingStoreEvents(): void {
163158
this.push(
164159
this.modelingStore.onModeledMethodsChanged(async (e) => {
165-
if (this.webviewView && e.isActiveDb) {
166-
const modeledMethods = e.modeledMethods[this.method?.signature ?? ""];
160+
if (this.webviewView && e.isActiveDb && this.method) {
161+
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+
methodSignature: this.method.signature,
166+
modeledMethods,
167+
});
175168
}
176169
}
177170
}),
@@ -198,7 +191,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
198191
await this.postMessage({
199192
t: "setSelectedMethod",
200193
method: e.method,
201-
modeledMethod: convertToLegacyModeledMethod(e.modeledMethods),
194+
modeledMethods: e.modeledMethods,
202195
isModified: e.isModified,
203196
});
204197
}

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

Lines changed: 8 additions & 21 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,13 +82,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
8982
return <NoMethodSelected />;
9083
}
9184

92-
if (
93-
!canMethodBeModeled(
94-
method,
95-
convertFromLegacyModeledMethod(modeledMethod),
96-
isMethodModified,
97-
)
98-
) {
85+
if (!canMethodBeModeled(method, modeledMethods, isMethodModified)) {
9986
return <MethodAlreadyModeled />;
10087
}
10188

@@ -110,7 +97,7 @@ export function MethodModelingView({ initialViewState }: Props): JSX.Element {
11097
<MethodModeling
11198
modelingStatus={modelingStatus}
11299
method={method}
113-
modeledMethods={convertFromLegacyModeledMethod(modeledMethod)}
100+
modeledMethods={modeledMethods}
114101
showMultipleModels={viewState?.showMultipleModels}
115102
onChange={onChange}
116103
/>

0 commit comments

Comments
 (0)