| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2025-05-12 13:25:36 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2025-05-12 13:36:16 UTC |
| parent | 066d08204a60461ff8c8ec4b1b5e3694a97484f7 |
| Makefile | +0 | -2 |
| snikket/Push.hx | +26 | -16 |
diff --git a/Makefile b/Makefile index 2e52ae7..edc53a6 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,6 @@ npm/snikket-browser.js: sed -i 's/snikket\.UserState/enums.UserState/g' npm/snikket-browser.d.ts sed -i 's/snikket\.ChatMessageEvent/enums.ChatMessageEvent/g' npm/snikket-browser.d.ts sed -i 's/snikket\.ReactionUpdateKind/enums.ReactionUpdateKind/g' npm/snikket-browser.d.ts - sed -i 's/_Push.Push_Fields_/Push/g' npm/snikket-browser.d.ts sed -i '1ivar exports = {};' npm/snikket-browser.js echo "export const snikket = exports.snikket;" >> npm/snikket-browser.js @@ -46,7 +45,6 @@ npm/snikket.js: sed -i 's/snikket\.UserState/enums.UserState/g' npm/snikket.d.ts sed -i 's/snikket\.ChatMessageEvent/enums.ChatMessageEvent/g' npm/snikket.d.ts sed -i 's/snikket\.ReactionUpdateKind/enums.ReactionUpdateKind/g' npm/snikket.d.ts - sed -i 's/_Push.Push_Fields_/Push/g' npm/snikket.d.ts sed -i '1iimport { createRequire } from "module";' npm/snikket.js sed -i '1iglobal.require = createRequire(import.meta.url);' npm/snikket.js sed -i '1ivar exports = {};' npm/snikket.js diff --git a/snikket/Push.hx b/snikket/Push.hx index 3aa7699..0874c9d 100644 --- a/snikket/Push.hx +++ b/snikket/Push.hx @@ -6,24 +6,34 @@ import snikket.Notification; import snikket.Persistence; import snikket.Stanza; +#if cpp +import HaxeCBridge; +#end + // this code should expect to be called from a different context to the app @:expose -function receive(data: String, persistence: Persistence) { - var stanza = Stanza.parse(data); - if (stanza == null) return null; - if (stanza.name == "envelope" && stanza.attr.get("xmlns") == "urn:xmpp:sce:1") { - stanza = stanza.getChild("content").getFirstChild(); - } - if (stanza.name == "forwarded" && stanza.attr.get("xmlns") == "urn:xmpp:forward:0") { - stanza = stanza.getChild("message", "jabber:client"); - } - if (stanza.attr.get("to") == null) return null; - // Assume incoming message - final message = ChatMessage.fromStanza(stanza, JID.parse(stanza.attr.get("to")).asBare()); - if (message != null) { - return Notification.fromChatMessage(message); - } else { - return Notification.fromThinStanza(stanza); +#if cpp +@:build(HaxeCBridge.expose()) +@:build(HaxeSwiftBridge.expose()) +#end +class Push { + public static function receive(data: String, persistence: Persistence) { + var stanza = Stanza.parse(data); + if (stanza == null) return null; + if (stanza.name == "envelope" && stanza.attr.get("xmlns") == "urn:xmpp:sce:1") { + stanza = stanza.getChild("content").getFirstChild(); + } + if (stanza.name == "forwarded" && stanza.attr.get("xmlns") == "urn:xmpp:forward:0") { + stanza = stanza.getChild("message", "jabber:client"); + } + if (stanza.attr.get("to") == null) return null; + // Assume incoming message + final message = ChatMessage.fromStanza(stanza, JID.parse(stanza.attr.get("to")).asBare()); + if (message != null) { + return Notification.fromChatMessage(message); + } else { + return Notification.fromThinStanza(stanza); + } } }