From 071a553662646e567ea3078751a5ab59c85bc4a8 Mon Sep 17 00:00:00 2001 From: Francisco Lopez Date: Wed, 24 Jan 2024 08:26:19 -0500 Subject: [PATCH] Resolved the bug that was causing no new webview to be opened after initial window was closed. --- src/extension.ts | 16 ++++++++++++++-- src/panel.ts | 10 ---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 6cd2a82..fd74fc8 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -12,7 +12,7 @@ let panel: vscode.WebviewPanel | undefined = undefined function activate(context: vscode.ExtensionContext) { // This is the column where Webview will be revealed to - const columnToShowIn : vscode.ViewColumn | undefined = vscode.window.activeTextEditor + let columnToShowIn : vscode.ViewColumn | undefined = vscode.window.activeTextEditor ? vscode.window.activeTextEditor.viewColumn : undefined; @@ -20,7 +20,6 @@ function activate(context: vscode.ExtensionContext) { // Command that allows for User to select the root file of their React application. const pickFile: vscode.Disposable = vscode.commands.registerCommand('myExtension.pickFile', async () => { - // Check if there is an existing webview panel, if so display it. if(panel) { panel.reveal(columnToShowIn) @@ -52,6 +51,19 @@ function activate(context: vscode.ExtensionContext) { panel.dispose() panel = createPanel(context, data, columnToShowIn); } + + // Listens for when webview is closed and disposes of webview resources + panel.onDidDispose( + () => { + console.log("Before: ", panel) + panel.dispose() + panel = undefined; + columnToShowIn = undefined; + console.log("After: ", panel) + }, + null, + context.subscriptions + ); }); diff --git a/src/panel.ts b/src/panel.ts index f06678a..1daba85 100644 --- a/src/panel.ts +++ b/src/panel.ts @@ -35,16 +35,6 @@ export function createPanel(context: vscode.ExtensionContext, data: Tree, column // render html of webview here panel.webview.html = createWebviewHTML(bundleURI, data); - - // Listens for when webview is closed and disposes of webview resources - panel.onDidDispose( - () => { - panel = undefined; - }, - null, - context.subscriptions - ); - // Sends data to Flow.tsx to be displayed after parsed data is received panel.webview.onDidReceiveMessage(