Merge pull request #2943 from github/koesie10/state-confusion
Fix confusion between modeling store and view states
This commit is contained in:
@@ -8,7 +8,7 @@ import { extLogger } from "../../common/logging/vscode/loggers";
|
||||
import { App } from "../../common/app";
|
||||
import { redactableError } from "../../common/errors";
|
||||
import { Method } from "../method";
|
||||
import { DbModelingState, ModelingStore } from "../modeling-store";
|
||||
import { ModelingStore } from "../modeling-store";
|
||||
import { AbstractWebviewViewProvider } from "../../common/vscode/abstract-webview-view-provider";
|
||||
import { assertNever } from "../../common/helpers-pure";
|
||||
import { ModelEditorViewTracker } from "../model-editor-view-tracker";
|
||||
@@ -71,6 +71,9 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
if (this.modelingStore.hasStateForActiveDb()) {
|
||||
const selectedMethod = this.modelingStore.getSelectedMethodDetails();
|
||||
if (selectedMethod) {
|
||||
this.databaseItem = selectedMethod.databaseItem;
|
||||
this.method = selectedMethod.method;
|
||||
|
||||
await this.postMessage({
|
||||
t: "setSelectedMethod",
|
||||
method: selectedMethod.method,
|
||||
@@ -111,15 +114,17 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
break;
|
||||
|
||||
case "setModeledMethod": {
|
||||
const activeState = this.ensureActiveState();
|
||||
if (!this.databaseItem) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.modelingStore.updateModeledMethods(
|
||||
activeState.databaseItem,
|
||||
this.databaseItem,
|
||||
msg.method.signature,
|
||||
convertFromLegacyModeledMethod(msg.method),
|
||||
);
|
||||
this.modelingStore.addModifiedMethod(
|
||||
activeState.databaseItem,
|
||||
this.databaseItem,
|
||||
msg.method.signature,
|
||||
);
|
||||
break;
|
||||
@@ -140,10 +145,12 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
}
|
||||
|
||||
private async revealInModelEditor(method: Method): Promise<void> {
|
||||
const activeState = this.ensureActiveState();
|
||||
if (!this.databaseItem) {
|
||||
return;
|
||||
}
|
||||
|
||||
const views = this.editorViewTracker.getViews(
|
||||
activeState.databaseItem.databaseUri.toString(),
|
||||
this.databaseItem.databaseUri.toString(),
|
||||
);
|
||||
if (views.length === 0) {
|
||||
return;
|
||||
@@ -152,15 +159,6 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
|
||||
await Promise.all(views.map((view) => view.revealMethod(method)));
|
||||
}
|
||||
|
||||
private ensureActiveState(): DbModelingState {
|
||||
const activeState = this.modelingStore.getStateForActiveDb();
|
||||
if (!activeState) {
|
||||
throw new Error("No active state found in modeling store");
|
||||
}
|
||||
|
||||
return activeState;
|
||||
}
|
||||
|
||||
private registerToModelingStoreEvents(): void {
|
||||
this.push(
|
||||
this.modelingStore.onModeledMethodsChanged(async (e) => {
|
||||
|
||||
@@ -676,16 +676,11 @@ export class ModelEditorView extends AbstractWebview<
|
||||
}
|
||||
|
||||
private setModeledMethods(signature: string, methods: ModeledMethod[]) {
|
||||
const state = this.modelingStore.getStateForActiveDb();
|
||||
if (!state) {
|
||||
throw new Error("Attempting to set modeled method without active db");
|
||||
}
|
||||
|
||||
this.modelingStore.updateModeledMethods(
|
||||
state.databaseItem,
|
||||
this.databaseItem,
|
||||
signature,
|
||||
methods,
|
||||
);
|
||||
this.modelingStore.addModifiedMethod(state.databaseItem, signature);
|
||||
this.modelingStore.addModifiedMethod(this.databaseItem, signature);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Method, Usage } from "./method";
|
||||
import { ModeledMethod } from "./modeled-method";
|
||||
import { INITIAL_HIDE_MODELED_METHODS_VALUE } from "./shared/hide-modeled-methods";
|
||||
|
||||
export interface DbModelingState {
|
||||
interface DbModelingState {
|
||||
databaseItem: DatabaseItem;
|
||||
methods: Method[];
|
||||
hideModeledMethods: boolean;
|
||||
@@ -347,6 +347,7 @@ export class ModelingStore extends DisposableObject {
|
||||
}
|
||||
|
||||
return {
|
||||
databaseItem: dbState.databaseItem,
|
||||
method: selectedMethod,
|
||||
usage: dbState.selectedUsage,
|
||||
modeledMethods: dbState.modeledMethods[selectedMethod.signature] ?? [],
|
||||
|
||||
Reference in New Issue
Block a user