Update details view on view state changes, and remember the most recently active panel

This commit is contained in:
Robert
2023-08-14 15:02:40 +01:00
parent 7c93c7046e
commit 6005e3ab70

View File

@@ -3,6 +3,7 @@ import {
ExtensionContext,
Uri,
ViewColumn,
WebviewPanel,
window,
} from "vscode";
import {
@@ -48,6 +49,8 @@ export class DataExtensionsEditorView extends AbstractWebview<
ToDataExtensionsEditorMessage,
FromDataExtensionsEditorMessage
> {
private static mostRecentlyActivePanel: WebviewPanel | undefined = undefined;
private readonly autoModeler: AutoModeler;
private externalApiUsages: ExternalApiUsage[];
@@ -95,9 +98,29 @@ export class DataExtensionsEditorView extends AbstractWebview<
const panel = await this.getPanel();
panel.reveal(undefined, true);
panel.onDidChangeViewState(async () => {
if (await this.isTheMostRecentlyActivePanel()) {
await this.updateModelDetailsPanelState(
this.externalApiUsages,
this.databaseItem,
);
}
});
await this.waitForPanelLoaded();
}
private async isTheMostRecentlyActivePanel(): Promise<boolean> {
const panel = await this.getPanel();
if (panel.active) {
DataExtensionsEditorView.mostRecentlyActivePanel = panel;
return true;
} else {
return panel === DataExtensionsEditorView.mostRecentlyActivePanel;
}
}
protected async getPanelConfig(): Promise<WebviewPanelConfig> {
return {
viewId: "data-extensions-editor",
@@ -289,10 +312,12 @@ export class DataExtensionsEditorView extends AbstractWebview<
t: "setExternalApiUsages",
externalApiUsages: this.externalApiUsages,
});
await this.updateModelDetailsPanelState(
this.externalApiUsages,
this.databaseItem,
);
if (await this.isTheMostRecentlyActivePanel()) {
await this.updateModelDetailsPanelState(
this.externalApiUsages,
this.databaseItem,
);
}
} catch (err) {
void showAndLogExceptionWithTelemetry(
this.app.logger,