Skip to content

Commit 87754a9

Browse files
Move mostRecentlyActiveView variable to DataExtensionsEditorModule
1 parent ee78df6 commit 87754a9

2 files changed

Lines changed: 35 additions & 23 deletions

File tree

extensions/ql-vscode/src/data-extensions-editor/data-extensions-editor-module.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ export class DataExtensionsEditorModule extends DisposableObject {
3232
private readonly queryStorageDir: string;
3333
private readonly modelDetailsPanel: ModelDetailsPanel;
3434

35+
private mostRecentlyActiveView: DataExtensionsEditorView | undefined =
36+
undefined;
37+
3538
private constructor(
3639
private readonly ctx: ExtensionContext,
3740
private readonly app: App,
@@ -48,6 +51,20 @@ export class DataExtensionsEditorModule extends DisposableObject {
4851
this.modelDetailsPanel = this.push(new ModelDetailsPanel(cliServer));
4952
}
5053

54+
private handleViewBecameActive(view: DataExtensionsEditorView): void {
55+
this.mostRecentlyActiveView = view;
56+
}
57+
58+
private handleViewWasDisposed(view: DataExtensionsEditorView): void {
59+
if (this.mostRecentlyActiveView === view) {
60+
this.mostRecentlyActiveView = undefined;
61+
}
62+
}
63+
64+
private isMostRecentlyActiveView(view: DataExtensionsEditorView): boolean {
65+
return this.mostRecentlyActiveView === view;
66+
}
67+
5168
public static async initialize(
5269
ctx: ExtensionContext,
5370
app: App,
@@ -149,6 +166,9 @@ export class DataExtensionsEditorModule extends DisposableObject {
149166
Mode.Application,
150167
this.modelDetailsPanel.setState.bind(this.modelDetailsPanel),
151168
this.modelDetailsPanel.revealItem.bind(this.modelDetailsPanel),
169+
this.handleViewBecameActive.bind(this),
170+
this.handleViewWasDisposed.bind(this),
171+
this.isMostRecentlyActiveView.bind(this),
152172
);
153173
await view.openView();
154174
},

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

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
ExtensionContext,
44
Uri,
55
ViewColumn,
6-
WebviewPanel,
76
window,
87
} from "vscode";
98
import {
@@ -49,8 +48,6 @@ export class DataExtensionsEditorView extends AbstractWebview<
4948
ToDataExtensionsEditorMessage,
5049
FromDataExtensionsEditorMessage
5150
> {
52-
private static mostRecentlyActivePanel: WebviewPanel | undefined = undefined;
53-
5451
private readonly autoModeler: AutoModeler;
5552

5653
private externalApiUsages: ExternalApiUsage[];
@@ -71,6 +68,15 @@ export class DataExtensionsEditorView extends AbstractWebview<
7168
databaseItem: DatabaseItem,
7269
) => Promise<void>,
7370
private readonly revealItemInDetailsPanel: (usage: Usage) => Promise<void>,
71+
private readonly handleViewBecameActive: (
72+
view: DataExtensionsEditorView,
73+
) => void,
74+
private readonly handleViewWasDisposed: (
75+
view: DataExtensionsEditorView,
76+
) => void,
77+
private readonly isMostRecentlyActiveView: (
78+
view: DataExtensionsEditorView,
79+
) => boolean,
7480
) {
7581
super(ctx);
7682

@@ -100,7 +106,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
100106

101107
panel.onDidChangeViewState(async () => {
102108
if (panel.active) {
103-
await this.onPanelBecameActive();
109+
this.handleViewBecameActive(this);
104110
await this.updateModelDetailsPanelState(
105111
this.externalApiUsages,
106112
this.databaseItem,
@@ -109,29 +115,12 @@ export class DataExtensionsEditorView extends AbstractWebview<
109115
});
110116

111117
panel.onDidDispose(async () => {
112-
await this.onPanelWasDisposed();
118+
this.handleViewWasDisposed(this);
113119
});
114120

115121
await this.waitForPanelLoaded();
116122
}
117123

118-
private async onPanelBecameActive(): Promise<void> {
119-
const panel = await this.getPanel();
120-
DataExtensionsEditorView.mostRecentlyActivePanel = panel;
121-
}
122-
123-
private async onPanelWasDisposed(): Promise<void> {
124-
const panel = await this.getPanel();
125-
if (panel === DataExtensionsEditorView.mostRecentlyActivePanel) {
126-
DataExtensionsEditorView.mostRecentlyActivePanel = undefined;
127-
}
128-
}
129-
130-
private async isTheMostRecentlyActivePanel(): Promise<boolean> {
131-
const panel = await this.getPanel();
132-
return panel === DataExtensionsEditorView.mostRecentlyActivePanel;
133-
}
134-
135124
protected async getPanelConfig(): Promise<WebviewPanelConfig> {
136125
return {
137126
viewId: "data-extensions-editor",
@@ -323,7 +312,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
323312
t: "setExternalApiUsages",
324313
externalApiUsages: this.externalApiUsages,
325314
});
326-
if (await this.isTheMostRecentlyActivePanel()) {
315+
if (this.isMostRecentlyActiveView(this)) {
327316
await this.updateModelDetailsPanelState(
328317
this.externalApiUsages,
329318
this.databaseItem,
@@ -448,6 +437,9 @@ export class DataExtensionsEditorView extends AbstractWebview<
448437
Mode.Framework,
449438
this.updateModelDetailsPanelState,
450439
this.revealItemInDetailsPanel,
440+
this.handleViewBecameActive,
441+
this.handleViewWasDisposed,
442+
this.isMostRecentlyActiveView,
451443
);
452444
await view.openView();
453445
});

0 commit comments

Comments
 (0)