44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
|
|
const vscode_api = acquireVsCodeApi();
|
|
|
|
class MessageUtil {
|
|
constructor() {
|
|
this.handlers = {};
|
|
}
|
|
|
|
// Register a message handler for a specific message type
|
|
registerHandler(messageType, handler) {
|
|
if (!this.handlers[messageType]) {
|
|
this.handlers[messageType] = [];
|
|
}
|
|
this.handlers[messageType].push(handler);
|
|
}
|
|
|
|
// Unregister a message handler for a specific message type
|
|
unregisterHandler(messageType, handler) {
|
|
if (this.handlers[messageType]) {
|
|
this.handlers[messageType] = this.handlers[messageType].filter(
|
|
(h) => h !== handler
|
|
);
|
|
}
|
|
}
|
|
|
|
// Handle a received message
|
|
handleMessage(message) {
|
|
console.log("handleMessage", message)
|
|
const handlers = this.handlers[message.command];
|
|
if (handlers) {
|
|
handlers.forEach((handler) => handler(message));
|
|
}
|
|
}
|
|
|
|
// Send a message to the VSCode API
|
|
sendMessage(message) {
|
|
console.log("sendMessage", message)
|
|
vscode_api.postMessage(message);
|
|
}
|
|
}
|
|
|
|
// Export the MessageUtil class as a module
|
|
const messageUtil = new MessageUtil();
|