Skip to content

Commit 6005e3a

Browse files
Update details view on view state changes, and remember the most recently active panel
1 parent 7c93c70 commit 6005e3a

1 file changed

Lines changed: 29 additions & 4 deletions

File tree

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

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
ExtensionContext,
44
Uri,
55
ViewColumn,
6+
WebviewPanel,
67
window,
78
} from "vscode";
89
import {
@@ -48,6 +49,8 @@ export class DataExtensionsEditorView extends AbstractWebview<
4849
ToDataExtensionsEditorMessage,
4950
FromDataExtensionsEditorMessage
5051
> {
52+
private static mostRecentlyActivePanel: WebviewPanel | undefined = undefined;
53+
5154
private readonly autoModeler: AutoModeler;
5255

5356
private externalApiUsages: ExternalApiUsage[];
@@ -95,9 +98,29 @@ export class DataExtensionsEditorView extends AbstractWebview<
9598
const panel = await this.getPanel();
9699
panel.reveal(undefined, true);
97100

101+
panel.onDidChangeViewState(async () => {
102+
if (await this.isTheMostRecentlyActivePanel()) {
103+
await this.updateModelDetailsPanelState(
104+
this.externalApiUsages,
105+
this.databaseItem,
106+
);
107+
}
108+
});
109+
98110
await this.waitForPanelLoaded();
99111
}
100112

113+
private async isTheMostRecentlyActivePanel(): Promise<boolean> {
114+
const panel = await this.getPanel();
115+
116+
if (panel.active) {
117+
DataExtensionsEditorView.mostRecentlyActivePanel = panel;
118+
return true;
119+
} else {
120+
return panel === DataExtensionsEditorView.mostRecentlyActivePanel;
121+
}
122+
}
123+
101124
protected async getPanelConfig(): Promise<WebviewPanelConfig> {
102125
return {
103126
viewId: "data-extensions-editor",
@@ -289,10 +312,12 @@ export class DataExtensionsEditorView extends AbstractWebview<
289312
t: "setExternalApiUsages",
290313
externalApiUsages: this.externalApiUsages,
291314
});
292-
await this.updateModelDetailsPanelState(
293-
this.externalApiUsages,
294-
this.databaseItem,
295-
);
315+
if (await this.isTheMostRecentlyActivePanel()) {
316+
await this.updateModelDetailsPanelState(
317+
this.externalApiUsages,
318+
this.databaseItem,
319+
);
320+
}
296321
} catch (err) {
297322
void showAndLogExceptionWithTelemetry(
298323
this.app.logger,

0 commit comments

Comments
 (0)