| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-03-04 20:13:31 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-03-04 20:13:31 UTC |
| parent | 0d8f945e1e8acf9c450b93272949db93d37458f8 |
| snikket/Client.hx | +54 | -3 |
| snikket/jingle/PeerConnection.cpp.hx | +7 | -1 |
diff --git a/snikket/Client.hx b/snikket/Client.hx index 165bf94..764da42 100644 --- a/snikket/Client.hx +++ b/snikket/Client.hx @@ -9,6 +9,7 @@ import haxe.crypto.Base64; import haxe.io.Bytes; import haxe.io.BytesData; import snikket.jingle.IceServer; +import snikket.jingle.PeerConnection; import snikket.Caps; import snikket.Chat; import snikket.ChatMessage; @@ -446,9 +447,6 @@ class Client extends EventEmitter { }); } - public function addChatMessageListener(handler:ChatMessage->Void):Void { - chatMessageHandlers.push(handler); - } public function addPasswordNeededListener(handler:String->Void) { this.on("auth/password-needed", (data) -> { @@ -457,6 +455,59 @@ class Client extends EventEmitter { }); } + public function addStatusOnlineListener(handler:()->Void):Void { + this.on("status/online", (data) -> { + handler(); + return EventHandled; + }); + } + + public function addChatMessageListener(handler:ChatMessage->Void):Void { + chatMessageHandlers.push(handler); + } + + public function addChatsUpdatedListener(handler:Array<Chat>->Void):Void { + this.on("chats/update", (data) -> { + handler(data); + return EventHandled; + }); + } + + public function addCallRingListener(handler:(Session,String)->Void):Void { + this.on("call/ring", (data) -> { + handler(data.session, data.chatId); + return EventHandled; + }); + } + + public function addCallRetractListener(handler:(String)->Void):Void { + this.on("call/retract", (data) -> { + handler(data.chatId); + return EventHandled; + }); + } + + public function addCallRingingListener(handler:(String)->Void):Void { + this.on("call/ringing", (data) -> { + handler(data.chatId); + return EventHandled; + }); + } + + public function addCallMediaListener(handler:(Session,Bool,Bool)->Void):Void { + this.on("call/media", (data) -> { + handler(data.session, data.audio, data.video); + return EventHandled; + }); + } + + public function addCallTrackListener(handler:(String,MediaStreamTrack,Array<MediaStream>)->Void):Void { + this.on("call/track", (data) -> { + handler(data.chatId, data.track, data.streams); + return EventHandled; + }); + } + private function onConnected(data) { // Fired on connect or reconnect if (data != null && data.jid != null) { jid = JID.parse(data.jid); diff --git a/snikket/jingle/PeerConnection.cpp.hx b/snikket/jingle/PeerConnection.cpp.hx index c4c7267..58c7ef0 100644 --- a/snikket/jingle/PeerConnection.cpp.hx +++ b/snikket/jingle/PeerConnection.cpp.hx @@ -1,13 +1,19 @@ package snikket.jingle; typedef TODO = Dynamic; -typedef MediaStreamTrack = TODO; typedef DTMFSender = TODO; typedef Transceiver = { receiver: Null<{ track: MediaStreamTrack }>, sender: Null<{ track: MediaStreamTrack, dtmf: DTMFSender }> } +class MediaStreamTrack { + public var muted: Bool; + public var kind: String; + + public function stop() { } +} + class MediaStream { public function getTracks() { return [];