import type { ChatEvent } from "../Events/ChatEvent"; import { isUserInputChatEvent, UserInputChatEvent } from "../Events/UserInputChatEvent"; import { IframeApiContribution, sendToWorkadventure } from "./IframeApiContribution"; import { apiCallback } from "./registeredCallbacks"; import { Subject } from "rxjs"; const chatStream = new Subject(); export class WorkadventureChatCommands extends IframeApiContribution { callbacks = [ apiCallback({ callback: (event: UserInputChatEvent) => { chatStream.next(event.message); }, type: "userInputChat", typeChecker: isUserInputChatEvent, }), ]; sendChatMessage(message: string, author: string) { sendToWorkadventure({ type: "chat", data: { message: message, author: author, }, }); } /** * Listen to messages sent by the local user, in the chat. */ onChatMessage(callback: (message: string) => void) { chatStream.subscribe(callback); } } export default new WorkadventureChatCommands();