| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2023-07-26 19:49:16 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2023-07-26 19:49:16 UTC |
| parent | adcecef35d8d711aaab8c62713994c867471e424 |
| xmpp/Client.hx | +18 | -0 |
diff --git a/xmpp/Client.hx b/xmpp/Client.hx index 5ff5517..ce38ac5 100644 --- a/xmpp/Client.hx +++ b/xmpp/Client.hx @@ -9,6 +9,7 @@ typedef ChatList = Array<Chat>; class Client extends xmpp.EventEmitter { private var stream:GenericStream; + private var chatMessageHandlers: Array<(ChatMessage)->Void> = []; public var jid(default,null):String; public function new(jid: String) { @@ -23,7 +24,24 @@ class Client extends xmpp.EventEmitter { stream.connect(jid); } + public function addChatMessageListener(handler:ChatMessage->Void):Void { + chatMessageHandlers.push(handler); + } + private function onConnected(data) { + this.stream.on("message", function(event) { + final stanza:Stanza = event.stanza; + final chatMessage = ChatMessage.fromStanza(stanza, jid); + if (chatMessage != null) { + for (handler in chatMessageHandlers) { + handler(chatMessage); + } + } + + return EventUnhandled; // Allow others to get this event as well + }); + + stream.sendStanza(new Stanza("presence")); // Set self to online return this.trigger("status/online", {}); }