Skip to content

Commit 59e23f3

Browse files
authored
Merge pull request #2943 from github/koesie10/state-confusion
Fix confusion between modeling store and view states
2 parents e7ddb44 + 9a12a12 commit 59e23f3

File tree

3 files changed

+17
-23
lines changed

3 files changed

+17
-23
lines changed

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

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { extLogger } from "../../common/logging/vscode/loggers";
88
import { App } from "../../common/app";
99
import { redactableError } from "../../common/errors";
1010
import { Method } from "../method";
11-
import { DbModelingState, ModelingStore } from "../modeling-store";
11+
import { ModelingStore } from "../modeling-store";
1212
import { AbstractWebviewViewProvider } from "../../common/vscode/abstract-webview-view-provider";
1313
import { assertNever } from "../../common/helpers-pure";
1414
import { ModelEditorViewTracker } from "../model-editor-view-tracker";
@@ -71,6 +71,9 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
7171
if (this.modelingStore.hasStateForActiveDb()) {
7272
const selectedMethod = this.modelingStore.getSelectedMethodDetails();
7373
if (selectedMethod) {
74+
this.databaseItem = selectedMethod.databaseItem;
75+
this.method = selectedMethod.method;
76+
7477
await this.postMessage({
7578
t: "setSelectedMethod",
7679
method: selectedMethod.method,
@@ -111,15 +114,17 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
111114
break;
112115

113116
case "setModeledMethod": {
114-
const activeState = this.ensureActiveState();
117+
if (!this.databaseItem) {
118+
return;
119+
}
115120

116121
this.modelingStore.updateModeledMethods(
117-
activeState.databaseItem,
122+
this.databaseItem,
118123
msg.method.signature,
119124
convertFromLegacyModeledMethod(msg.method),
120125
);
121126
this.modelingStore.addModifiedMethod(
122-
activeState.databaseItem,
127+
this.databaseItem,
123128
msg.method.signature,
124129
);
125130
break;
@@ -140,10 +145,12 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
140145
}
141146

142147
private async revealInModelEditor(method: Method): Promise<void> {
143-
const activeState = this.ensureActiveState();
148+
if (!this.databaseItem) {
149+
return;
150+
}
144151

145152
const views = this.editorViewTracker.getViews(
146-
activeState.databaseItem.databaseUri.toString(),
153+
this.databaseItem.databaseUri.toString(),
147154
);
148155
if (views.length === 0) {
149156
return;
@@ -152,15 +159,6 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
152159
await Promise.all(views.map((view) => view.revealMethod(method)));
153160
}
154161

155-
private ensureActiveState(): DbModelingState {
156-
const activeState = this.modelingStore.getStateForActiveDb();
157-
if (!activeState) {
158-
throw new Error("No active state found in modeling store");
159-
}
160-
161-
return activeState;
162-
}
163-
164162
private registerToModelingStoreEvents(): void {
165163
this.push(
166164
this.modelingStore.onModeledMethodsChanged(async (e) => {

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -676,16 +676,11 @@ export class ModelEditorView extends AbstractWebview<
676676
}
677677

678678
private setModeledMethods(signature: string, methods: ModeledMethod[]) {
679-
const state = this.modelingStore.getStateForActiveDb();
680-
if (!state) {
681-
throw new Error("Attempting to set modeled method without active db");
682-
}
683-
684679
this.modelingStore.updateModeledMethods(
685-
state.databaseItem,
680+
this.databaseItem,
686681
signature,
687682
methods,
688683
);
689-
this.modelingStore.addModifiedMethod(state.databaseItem, signature);
684+
this.modelingStore.addModifiedMethod(this.databaseItem, signature);
690685
}
691686
}

extensions/ql-vscode/src/model-editor/modeling-store.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Method, Usage } from "./method";
66
import { ModeledMethod } from "./modeled-method";
77
import { INITIAL_HIDE_MODELED_METHODS_VALUE } from "./shared/hide-modeled-methods";
88

9-
export interface DbModelingState {
9+
interface DbModelingState {
1010
databaseItem: DatabaseItem;
1111
methods: Method[];
1212
hideModeledMethods: boolean;
@@ -347,6 +347,7 @@ export class ModelingStore extends DisposableObject {
347347
}
348348

349349
return {
350+
databaseItem: dbState.databaseItem,
350351
method: selectedMethod,
351352
usage: dbState.selectedUsage,
352353
modeledMethods: dbState.modeledMethods[selectedMethod.signature] ?? [],

0 commit comments

Comments
 (0)