From 46bda59f4055c43a385e24a462acdf4ee45c7f8f Mon Sep 17 00:00:00 2001 From: Evan Krause Date: Thu, 21 Jan 2021 18:01:00 -0800 Subject: [PATCH] Fix webview sample deserializing after an extension update --- webview-sample/src/extension.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/webview-sample/src/extension.ts b/webview-sample/src/extension.ts index 81f6f1dc..63499008 100644 --- a/webview-sample/src/extension.ts +++ b/webview-sample/src/extension.ts @@ -26,12 +26,24 @@ export function activate(context: vscode.ExtensionContext) { vscode.window.registerWebviewPanelSerializer(CatCodingPanel.viewType, { async deserializeWebviewPanel(webviewPanel: vscode.WebviewPanel, state: any) { console.log(`Got state: ${state}`); + // Reset the webview options so we use latest uri for `localResourceRoots`. + webviewPanel.webview.options = getWebviewOptions(context.extensionUri); CatCodingPanel.revive(webviewPanel, context.extensionUri); } }); } } +function getWebviewOptions(extensionUri: vscode.Uri): vscode.WebviewOptions { + return { + // Enable javascript in the webview + enableScripts: true, + + // And restrict the webview to only loading content from our extension's `media` directory. + localResourceRoots: [vscode.Uri.joinPath(extensionUri, 'media')] + }; +} + /** * Manages cat coding webview panels */ @@ -63,13 +75,7 @@ class CatCodingPanel { CatCodingPanel.viewType, 'Cat Coding', column || vscode.ViewColumn.One, - { - // Enable javascript in the webview - enableScripts: true, - - // And restrict the webview to only loading content from our extension's `media` directory. - localResourceRoots: [vscode.Uri.joinPath(extensionUri, 'media')] - } + getWebviewOptions(extensionUri), ); CatCodingPanel.currentPanel = new CatCodingPanel(panel, extensionUri);