import { MessageHandler } from './MessageHandler'; import { ApplicationConfig } from '../../config/ApplicationConfig'; import { MessageSchema } from './MessageSchema'; export class MessageHandlerChain { constructor(private readonly handlers: MessageHandler[]) {} public async handleMessage(message: MessageEvent): Promise { if (!this.isValidMessageEvent(message)) { return; } for (const handler of this.handlers) { if (handler.shouldHandle(message)) { try { await handler.handleMessage(message); } catch (error) { console.error(`Error handling message: ${error}`); } } } } private isValidMessageEvent(message: MessageEvent): boolean { return message && message.data && message.origin === ApplicationConfig.chatWidgetUrl; } }