Skip to content

Commit f0fabc6

Browse files
feat(Sky): Add webview post-message bridge for extension communication
Add a new handler for `sky://webview/post-message` that dispatches `cel:webview:post-message` custom events to the renderer. This bridges the raw extension `postMessage` path from Cocoon (gRPC `OnDidReceiveMessage` + `PostWebviewMessage`) which carries the `{ handle, message }` shape, distinct from the existing `sky://webview/message` handler that uses the workbench-RPC `{ panelId, method, params }` shape. This enables extension-hosted code to communicate back to the Sky webview UI components through the established custom event system.
1 parent 6fdd245 commit f0fabc6

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

Source/Function/SkyBridge.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,6 +2330,11 @@ export async function InstallSkyBridge(): Promise<void> {
23302330
}
23312331

23322332
// ---- Webview ----
2333+
// `sky://webview/message` carries the workbench-RPC shape
2334+
// `{ panelId, method, params }` (Mountain `RPC/CocoonService/mod.rs`
2335+
// `webview.postMessage` arm). The raw extension `postMessage` path
2336+
// (gRPC `OnDidReceiveMessage` + `PostWebviewMessage`) emits the
2337+
// `{ handle, message }` shape on `sky://webview/post-message`.
23332338
await Register(
23342339
"sky://webview/message",
23352340
({ panelId, method, params }: any) => {
@@ -2341,6 +2346,17 @@ export async function InstallSkyBridge(): Promise<void> {
23412346
},
23422347
);
23432348

2349+
await Register(
2350+
"sky://webview/post-message",
2351+
({ handle, message }: any) => {
2352+
document.dispatchEvent(
2353+
new CustomEvent("cel:webview:post-message", {
2354+
detail: { handle, message },
2355+
}),
2356+
);
2357+
},
2358+
);
2359+
23442360
await Register("sky://webview/dispose", ({ panelId }: any) => {
23452361
document.dispatchEvent(
23462362
new CustomEvent("cel:webview:dispose", { detail: { panelId } }),

0 commit comments

Comments
 (0)