fix(vscode,ui): stop postMessage crash when opening chat in Cursor (#2335)
VS Code webviews delete window.parent, so ChatContainer's settings-sync effect threw TypeError on chat open. Also harden the webview bridge when acquireVsCodeApi() returns undefined and SSE panel disposal races. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
co-authored by
Cursor Agent
Serhii Dziupin
parent
200c02cd00
commit
485efc7117
@@ -9,10 +9,24 @@ interface VSCodeAPI {
|
||||
}
|
||||
|
||||
let vscodeApi: VSCodeAPI | null = null;
|
||||
let noopWarned = false;
|
||||
|
||||
const noopVSCodeApi: VSCodeAPI = {
|
||||
postMessage: (message) => {
|
||||
// acquireVsCodeApi() can return undefined in broken/non-standard webview slots
|
||||
// (Cursor after extension update, VSCodium, headless). Drop the message instead
|
||||
// of throwing TypeError: Cannot read properties of undefined (reading 'postMessage').
|
||||
if (!noopWarned) {
|
||||
noopWarned = true;
|
||||
console.warn('[openchamber] VS Code API unavailable; dropping postMessage', message);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
function getVSCodeAPI(): VSCodeAPI {
|
||||
if (!vscodeApi) {
|
||||
vscodeApi = acquireVsCodeApi();
|
||||
const acquired = typeof acquireVsCodeApi === 'function' ? acquireVsCodeApi() : undefined;
|
||||
vscodeApi = acquired ?? noopVSCodeApi;
|
||||
}
|
||||
return vscodeApi;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user