From c2dca1aa1da0c2d4d2743efd914bd691aa6e3a02 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 25 Sep 2023 16:20:14 -0400 Subject: [PATCH] Fix sandbox stuck loading Don't `await` message being sent to the webview when the webview is being built, since the webview is likely unable to receive the message yet. Fixes #3323 Signed-off-by: David Thompson --- src/webview/cluster/clusterViewLoader.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/webview/cluster/clusterViewLoader.ts b/src/webview/cluster/clusterViewLoader.ts index 66637a23d..c58fbcdc4 100644 --- a/src/webview/cluster/clusterViewLoader.ts +++ b/src/webview/cluster/clusterViewLoader.ts @@ -358,7 +358,6 @@ export default class ClusterViewLoader { await cfg.update('crcNameserver', event.nameserver); } - // eslint-disable-next-line @typescript-eslint/require-await static async loadView(title: string): Promise { const localResourceRoot = vscode.Uri.file(path.join(ClusterViewLoader.extensionPath, 'out', 'clusterViewer')); if (panel) { @@ -372,11 +371,13 @@ export default class ClusterViewLoader { }); panel.iconPath = vscode.Uri.file(path.join(ClusterViewLoader.extensionPath, 'images/context/cluster-node.png')); panel.webview.html = await loadWebviewHtml('clusterViewer', panel); - await panel.webview.postMessage({action: 'cluster', data: ''}); + const messageListenerDisposable = panel.webview.onDidReceiveMessage(clusterEditorMessageListener); panel.onDidDispose(()=> { + messageListenerDisposable.dispose(); panel = undefined; }); - panel.webview.onDidReceiveMessage(clusterEditorMessageListener); + // don't await this message being sent, since the webview may not be set up yet + void panel.webview.postMessage({action: 'cluster', data: ''}); } return panel; }