git » sdk » commit 094c926

Switch push to a useless class

author Stephen Paul Weber
2025-05-12 13:25:36 UTC
committer Stephen Paul Weber
2025-05-12 13:36:16 UTC
parent 066d08204a60461ff8c8ec4b1b5e3694a97484f7

Switch push to a useless class

C bridge only really knows how to bridge stuff on classes and there's no
real equivalent macro system for bare methods so far as I can see...

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);
+		}
 	}
 }