44 lines
1.1 KiB
JavaScript
Raw Normal View History

2023-05-02 19:58:32 +08:00
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();