Merge pull request #2280 from github/koesie10/fix-webview-disposed

Fix error when closing MRVA webview during extension activation
This commit is contained in:
Koen Vlaswinkel
2023-04-06 16:33:26 +02:00
committed by GitHub

View File

@@ -37,6 +37,14 @@ export class VariantAnalysisViewSerializer implements WebviewPanelSerializer {
return;
}
// Between the time the webview is deserialized and the time the extension
// is fully activated, the user may close the webview. In this case, we
// should not attempt to restore the view.
let disposed = false;
const unregisterOnDidDispose = webviewPanel.onDidDispose(() => {
disposed = true;
});
const variantAnalysisState: VariantAnalysisState =
state as VariantAnalysisState;
@@ -46,11 +54,16 @@ export class VariantAnalysisViewSerializer implements WebviewPanelSerializer {
variantAnalysisState.variantAnalysisId,
);
if (existingView) {
unregisterOnDidDispose.dispose();
await existingView.openView();
webviewPanel.dispose();
return;
}
if (disposed) {
return;
}
const view = new VariantAnalysisView(
this.ctx,
this.app,
@@ -58,6 +71,8 @@ export class VariantAnalysisViewSerializer implements WebviewPanelSerializer {
manager,
);
await view.restoreView(webviewPanel);
unregisterOnDidDispose.dispose();
}
private waitForExtensionFullyLoaded(): Promise<