|
3 | 3 | ExtensionContext, |
4 | 4 | Uri, |
5 | 5 | ViewColumn, |
| 6 | + WebviewPanel, |
6 | 7 | window, |
7 | 8 | } from "vscode"; |
8 | 9 | import { |
@@ -48,6 +49,8 @@ export class DataExtensionsEditorView extends AbstractWebview< |
48 | 49 | ToDataExtensionsEditorMessage, |
49 | 50 | FromDataExtensionsEditorMessage |
50 | 51 | > { |
| 52 | + private static mostRecentlyActivePanel: WebviewPanel | undefined = undefined; |
| 53 | + |
51 | 54 | private readonly autoModeler: AutoModeler; |
52 | 55 |
|
53 | 56 | private externalApiUsages: ExternalApiUsage[]; |
@@ -95,9 +98,29 @@ export class DataExtensionsEditorView extends AbstractWebview< |
95 | 98 | const panel = await this.getPanel(); |
96 | 99 | panel.reveal(undefined, true); |
97 | 100 |
|
| 101 | + panel.onDidChangeViewState(async () => { |
| 102 | + if (await this.isTheMostRecentlyActivePanel()) { |
| 103 | + await this.updateModelDetailsPanelState( |
| 104 | + this.externalApiUsages, |
| 105 | + this.databaseItem, |
| 106 | + ); |
| 107 | + } |
| 108 | + }); |
| 109 | + |
98 | 110 | await this.waitForPanelLoaded(); |
99 | 111 | } |
100 | 112 |
|
| 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 | + |
101 | 124 | protected async getPanelConfig(): Promise<WebviewPanelConfig> { |
102 | 125 | return { |
103 | 126 | viewId: "data-extensions-editor", |
@@ -289,10 +312,12 @@ export class DataExtensionsEditorView extends AbstractWebview< |
289 | 312 | t: "setExternalApiUsages", |
290 | 313 | externalApiUsages: this.externalApiUsages, |
291 | 314 | }); |
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 | + } |
296 | 321 | } catch (err) { |
297 | 322 | void showAndLogExceptionWithTelemetry( |
298 | 323 | this.app.logger, |
|
0 commit comments