Skip to content

Commit 9805c10

Browse files
committed
Fix: webview dispose error
1 parent aceea26 commit 9805c10

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

src/commands/showPanel.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ export async function showPanel(
3535
},
3636
);
3737

38+
// Reset stored panel when the user closes it
39+
messageHandler.panel.onDidDispose(() => {
40+
messageHandler.panel = null;
41+
});
42+
3843
messageHandler.panel.webview.onDidReceiveMessage(
3944
(message: MessageType) => messageHandler.handleMessage(context, message),
4045
undefined,
@@ -68,13 +73,16 @@ export async function showPanel(
6873
messageHandler.panel.iconPath = SOURCE_ACADEMY_ICON_URI;
6974
}
7075

71-
export async function sendToFrontendWrapped(message: MessageType) {
72-
sendToFrontend(messageHandler.panel, message);
73-
// TODO: This returning of status code shouldn't be necessary after refactor
76+
export function sendToFrontendWrapped(message: MessageType): boolean {
7477
if (!messageHandler.panel) {
75-
console.error("ERROR: panel is not set");
7678
return false;
7779
}
78-
sendToFrontend(messageHandler.panel, message);
79-
return true;
80+
try {
81+
sendToFrontend(messageHandler.panel, message);
82+
return true;
83+
} catch (err) {
84+
console.error("Failed to send message to webview", err);
85+
messageHandler.panel = null;
86+
return false;
87+
}
8088
}

src/webview/components/SourceAcademy.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ const SourceAcademy: React.FC = () => {
6060
setRetryCount((c) => c + 1);
6161
}, [retryCount]);
6262

63-
// Show overlay if frontend handshake never completes within 5 s.
6463
// Re-runs whenever retryCount increments.
6564
useEffect(() => {
6665
const timer = window.setTimeout(() => {

0 commit comments

Comments
 (0)