| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-03-05 20:28:16 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-03-05 20:28:16 UTC |
| parent | 36bca44c2c1a598152c08354863d08c9c53e0ab0 |
| snikket/Chat.hx | +9 | -9 |
| snikket/ChatMessage.hx | +20 | -20 |
| snikket/Client.hx | +41 | -37 |
diff --git a/snikket/Chat.hx b/snikket/Chat.hx index 48fda70..27df3b6 100644 --- a/snikket/Chat.hx +++ b/snikket/Chat.hx @@ -27,8 +27,8 @@ abstract class Chat { private var client:Client; private var stream:GenericStream; private var persistence:Persistence; - @HaxeCBridge.noemit - public var avatarSha1:Null<BytesData> = null; + @:allow(snikket) + private var avatarSha1:Null<BytesData> = null; private var presence:Map<String, Presence> = []; private var trusted:Bool = false; public var chatId(default, null):String; @@ -40,8 +40,8 @@ abstract class Chat { private var _unreadCount = 0; private var lastMessage: Null<ChatMessage>; - @HaxeCBridge.noemit - public function new(client:Client, stream:GenericStream, persistence:Persistence, chatId:String, uiState:Dynamic = Open, extensions: Null<Stanza> = null) { + @:allow(snikket) + private function new(client:Client, stream:GenericStream, persistence:Persistence, chatId:String, uiState:Dynamic = Open, extensions: Null<Stanza> = null) { this.client = client; this.stream = stream; this.persistence = persistence; @@ -161,8 +161,8 @@ abstract class Chat { return presence[resource]?.caps ?? new Caps("", [], []); } - @HaxeCBridge.noemit - public function setAvatarSha1(sha1: BytesData) { + @:allow(snikket) + private function setAvatarSha1(sha1: BytesData) { this.avatarSha1 = sha1; } @@ -264,12 +264,12 @@ abstract class Chat { @:expose @:build(HaxeCBridge.expose()) class DirectChat extends Chat { - @HaxeCBridge.noemit + @HaxeCBridge.noemit // on superclass as abstract public function getParticipants(): Array<String> { return chatId.split("\n"); } - @HaxeCBridge.noemit + @HaxeCBridge.noemit // on superclass as abstract public function getParticipantDetails(participantId:String, callback:({photoUri:String, displayName:String})->Void) { final chat = client.getDirectChat(participantId); chat.getPhoto((photoUri) -> callback({ photoUri: photoUri, displayName: chat.getDisplayName() })); @@ -338,7 +338,7 @@ class DirectChat extends Chat { }); } - @HaxeCBridge.noemit + @HaxeCBridge.noemit // on superclass as abstract public function sendMessage(message:ChatMessage):Void { client.chatActivity(this); message = prepareOutgoingMessage(message); diff --git a/snikket/ChatMessage.hx b/snikket/ChatMessage.hx index 63b9bd1..6a1c0db 100644 --- a/snikket/ChatMessage.hx +++ b/snikket/ChatMessage.hx @@ -36,21 +36,21 @@ class ChatMessage { public var localId (default, set) : Null<String> = null; public var serverId (default, set) : Null<String> = null; public var serverIdBy : Null<String> = null; - @HaxeCBridge.noemit - public var syncPoint : Bool = false; + @:allow(snikket) + private var syncPoint : Bool = false; public var timestamp (default, set) : Null<String> = null; - @HaxeCBridge.noemit - public var to: Null<JID> = null; - @HaxeCBridge.noemit - public var from: Null<JID> = null; - @HaxeCBridge.noemit - public var sender: Null<JID> = null; - @HaxeCBridge.noemit - public var recipients: Array<JID> = []; - @HaxeCBridge.noemit - public var replyTo: Array<JID> = []; + @:allow(snikket) + private var to: Null<JID> = null; + @:allow(snikket) + private var from: Null<JID> = null; + @:allow(snikket) + private var sender: Null<JID> = null; + @:allow(snikket) + private var recipients: Array<JID> = []; + @:allow(snikket) + private var replyTo: Array<JID> = []; public var replyToMessage: Null<ChatMessage> = null; public var threadId: Null<String> = null; @@ -69,8 +69,8 @@ class ChatMessage { public var status: MessageStatus = MessagePending; @HaxeCBridge.noemit public var versions: Array<ChatMessage> = []; - @HaxeCBridge.noemit - public var payloads: Array<Stanza> = []; + @:allow(snikket) + private var payloads: Array<Stanza> = []; public function new() { } @@ -78,8 +78,8 @@ class ChatMessage { text = t; } - @HaxeCBridge.noemit - public static function fromStanza(stanza:Stanza, localJid:JID):Null<ChatMessage> { + @:allow(snikket) + private static function fromStanza(stanza:Stanza, localJid:JID):Null<ChatMessage> { switch Message.fromStanza(stanza, localJid) { case ChatMessageStanza(message): return message; @@ -88,8 +88,8 @@ class ChatMessage { } } - @HaxeCBridge.noemit - public function attachSims(sims: Stanza) { + @:allow(snikket) + private function attachSims(sims: Stanza) { var mime = sims.findText("{urn:xmpp:jingle:apps:file-transfer:5}/media-type#"); if (mime == null) mime = sims.findText("{urn:xmpp:jingle:apps:file-transfer:3}/media-type#"); if (mime == null) mime = "application/octet-stream"; @@ -168,8 +168,8 @@ class ChatMessage { return threadId == null ? null : Identicon.svg(threadId); } - @HaxeCBridge.noemit - public function asStanza():Stanza { + @:allow(snikket) + private function asStanza():Stanza { var body = text; var attrs: haxe.DynamicAccess<String> = { type: isGroupchat ? "groupchat" : "chat" }; if (from != null) attrs.set("from", from.asString()); diff --git a/snikket/Client.hx b/snikket/Client.hx index 764da42..89c687e 100644 --- a/snikket/Client.hx +++ b/snikket/Client.hx @@ -712,38 +712,6 @@ class Client extends EventEmitter { } } - public function chatActivity(chat: Chat, trigger = true) { - if (chat.uiState == Closed) { - chat.uiState = Open; - persistence.storeChat(accountId(), chat); - } - var idx = chats.indexOf(chat); - if (idx > 0) { - chats.splice(idx, 1); - chats.unshift(chat); - if (trigger) this.trigger("chats/update", [chat]); - } - } - - /* Internal-ish methods */ - public function sendQuery(query:GenericQuery) { - this.stream.sendIq(query.getQueryStanza(), query.handleResponse); - } - - public function sendStanza(stanza:Stanza) { - if (stanza.attr.get("id") == null) stanza.attr.set("id", ID.long()); - stream.sendStanza(stanza); - } - - public function sendPresence(?to: String, ?augment: (Stanza)->Stanza) { - sendStanza( - (augment ?? (s)->s)( - caps.addC(new Stanza("presence", to == null ? {} : { to: to })) - .textTag("nick", displayName(), { xmlns: "http://jabber.org/protocol/nick" }) - ) - ); - } - #if js public function subscribePush(reg: js.html.ServiceWorkerRegistration, push_service: String, vapid_key: { publicKey: js.html.CryptoKey, privateKey: js.html.CryptoKey}) { js.Browser.window.crypto.subtle.exportKey("raw", vapid_key.publicKey).then((vapid_public_raw) -> { @@ -778,8 +746,43 @@ class Client extends EventEmitter { } #end - @HaxeCBridge.noemit - public function getIceServers(callback: (Array<IceServer>)->Void) { + @:allow(snikket) + private function chatActivity(chat: Chat, trigger = true) { + if (chat.uiState == Closed) { + chat.uiState = Open; + persistence.storeChat(accountId(), chat); + } + var idx = chats.indexOf(chat); + if (idx > 0) { + chats.splice(idx, 1); + chats.unshift(chat); + if (trigger) this.trigger("chats/update", [chat]); + } + } + + @:allow(snikket) + private function sendQuery(query:GenericQuery) { + this.stream.sendIq(query.getQueryStanza(), query.handleResponse); + } + + @:allow(snikket) + private function sendStanza(stanza:Stanza) { + if (stanza.attr.get("id") == null) stanza.attr.set("id", ID.long()); + stream.sendStanza(stanza); + } + + @:allow(snikket) + private function sendPresence(?to: String, ?augment: (Stanza)->Stanza) { + sendStanza( + (augment ?? (s)->s)( + caps.addC(new Stanza("presence", to == null ? {} : { to: to })) + .textTag("nick", displayName(), { xmlns: "http://jabber.org/protocol/nick" }) + ) + ); + } + + @:allow(snikket) + private function getIceServers(callback: (Array<IceServer>)->Void) { final extDiscoGet = new ExtDiscoGet(jid.domain); extDiscoGet.onFinished(() -> { final servers = []; @@ -801,8 +804,8 @@ class Client extends EventEmitter { sendQuery(extDiscoGet); } - @HaxeCBridge.noemit - public function discoverServices(target: JID, ?node: String, callback: ({ jid: JID, name: Null<String>, node: Null<String> }, Caps)->Void) { + @:allow(snikket) + private function discoverServices(target: JID, ?node: String, callback: ({ jid: JID, name: Null<String>, node: Null<String> }, Caps)->Void) { final itemsGet = new DiscoItemsGet(target.asString(), node); itemsGet.onFinished(()-> { for (item in itemsGet.getResult() ?? []) { @@ -816,7 +819,8 @@ class Client extends EventEmitter { sendQuery(itemsGet); } - public function notifyMessageHandlers(message: ChatMessage) { + @:allow(snikket) + private function notifyMessageHandlers(message: ChatMessage) { for (handler in chatMessageHandlers) { handler(message); }